Günlükleri yazma ve görüntüleme


Günlük kaydı, kodda hata ayıklama ve izleme için önemli bir araçtır. Cloud Functions, web için geliştirme yaparken kendi günlük kaydı SDK'sını, özel Google Cloud Logging'ı veya console nesne standardını kullanma seçeneği sunar.

Günlük yazma

Çoğu durumda Cloud Functions günlük kaydı SDK'sı önerilir ancak aşağıdaki nedenlerle diğer seçeneklerden birini tercih edebilirsiniz:

  • Mevcut bir kod tabanınız varsa ve console.log'ten yeniden yapılandırmayı tercih etmiyorsanız
  • Cloud Logging'ü (eski adıyla StackDriver günlük kaydı) tanıyorsunuz ve özel günlük kaydı için kullanmayı tercih ediyorsunuz.

Cloud Functions günlük kaydı SDK'sını kullanma

Cloud Functions günlük kaydı SDK'sı, console.log ifadelerine benzer bir API'ye sahip olan ve diğer günlük düzeylerini destekleyen standart bir arayüz sağlar. Bu SDK'yı, etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için kullanabilirsiniz. Böylece daha kolay analiz ve izleme yapabilirsiniz.

Günlük kaydı SDK'sı, joker karakterli içe aktarma işleminin bir parçası olarak günlük girişlerini destekler. Örneğin:

  const functions = require("firebase-functions/v1");

  functions.logger.log("Hello from info. Here's an object:", someObj);

Alternatif olarak, tek tek dışa aktarma işlemlerini de kullanabilirsiniz. Bu örnekte, günlüke son bağımsız değişken olarak eklenen yapılandırılmış veriler gösterilmektedir:

const { warn } = require("firebase-functions/logger");


// Attach structured data to the log as the last argument.
warn("This is a 'WARNING' severity message with some metadata.", {
  key1: 'val1',
  key2: 'val2'
});
  • logger.log() komutları INFO günlük düzeyine sahiptir.
  • logger.info() komutları INFO günlük düzeyine sahiptir.
  • logger.warn() komutları UYARI günlük düzeyine sahiptir.
  • logger.error() komutları ERROR günlük düzeyine sahiptir.
  • Dahili sistem mesajları DEBUG günlük düzeyine sahiptir.

logger.write() ile CRITICAL, ALERT ve EMERGENCY günlük önem düzeylerine ek olarak günlük girişleri yazabilirsiniz. LogSeverity konusuna bakın.

Özel Cloud Logging günlükleri

Günlükleyici SDK'sı içeren Cloud Functions günlükleri Cloud Logging tarafından desteklenir. Etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için Node.js için Cloud Logging kitaplığını kullanabilirsiniz. Bu sayede daha kolay analiz ve izleme yapabilirsiniz.

const { Logging } = require('@google-cloud/logging');

// ...

// Instantiate the logging SDK. The project ID will
// be automatically inferred from the Cloud Functions environment.
const logging = new Logging();
const log = logging.log('my-custom-log-name');

// This metadata is attached to each log entry. This specifies a fake
// Cloud Function called 'Custom Metrics' in order to make your custom
// log entries appear in the Cloud Functions logs viewer.
const METADATA = {
  resource: {
    type: 'cloud_function',
    labels: {
      function_name: 'CustomMetrics',
      region: 'us-central1'
    }
  }
};

// ...

// Data to write to the log. This can be a JSON object with any properties
// of the event you want to record.
const data = {
  event: 'my-event',
  value: 'foo-bar-baz',

  // Optional 'message' property will show up in the Firebase
  // console and other human-readable logging surfaces
  message: 'my-event: foo-bar-baz'
};

// Write to the log. The log.write() call returns a Promise if you want to
// make sure that the log was written successfully.
const entry = log.entry(METADATA, data);
log.write(entry);

console.log uygulamasını kullanma

Bir işlevden günlük kaydı almak için önerilen çözüm, platformunuz için günlük kaydı SDK'sını kullanmaktır. Node.js'de bunun yerine console.log ve console.error gibi standart JavaScript günlük kaydı çağrılarını kullanabilirsiniz. Ancak standart yöntemlerin doğru şekilde çalışması için önce özel bir modül gerektiren bir yamayı uygulamanız gerekir:

require("firebase-functions/logger/compat");

Günlük kaydı uyumluluk modülünü zorunlu kıldıysanız kodunuzda console.log() yöntemlerini normal şekilde kullanabilirsiniz:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • console.log() komutları INFO günlük düzeyine sahiptir.
  • console.info() komutları INFO günlük düzeyine sahiptir.
  • console.warn() komutları ERROR günlük düzeyine sahiptir.
  • console.error() komutları ERROR günlük düzeyine sahiptir.
  • Dahili sistem mesajları DEBUG günlük düzeyine sahiptir.

Günlükleri görüntüleme

Cloud Functions günlükleri Google Cloud konsolunda, Cloud Logging kullanıcı arayüzünde veya firebase komut satırı aracında görüntülenebilir.

Firebase CLI'yı kullanma

Günlükleri firebase aracıyla görüntülemek için functions:log komutunu kullanın:

firebase functions:log

Belirli bir işlevin günlüklerini görüntülemek için işlev adını bağımsız değişken olarak sağlayın:

firebase functions:log --only <FUNCTION_NAME>

Günlük görüntüleme seçeneklerinin tamamı için functions:log ile ilgili yardım sayfasını inceleyin:

firebase help functions:log

Google Cloud konsolunu kullanma

İşlevlerin günlüklerini Google Cloud konsolunda görüntüleyebilirsiniz.

Cloud Logging kullanıcı arayüzünü kullanma

Cloud Logging kullanıcı arayüzünde Cloud Functions ile ilgili günlükleri görüntüleyebilirsiniz.

Günlükleri analiz etme

Cloud Logging, Cloud Functions'inizi izlemek için kullanabileceğiniz güçlü bir günlük analizi araç paketi sunar.

Grafikler ve uyarılar

İşlevlerinizi izlemek için günlük tabanlı metrikler oluşturduktan sonra bu metriklere göre grafikler ve uyarılar oluşturabilirsiniz. Örneğin, gecikmeyi zaman içinde görselleştirmek için bir grafik oluşturabilir veya belirli bir hatanın çok sık gerçekleşip gerçekleşmediğini bildiren bir uyarı oluşturabilirsiniz.

Günlük tabanlı metrikleri grafiklerde ve uyarı politikalarında kullanma hakkında ayrıntılı bilgi için Grafik ve Uyarı Oluşturma başlıklı makaleye bakın.