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


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

Günlük yazma

Çoğu durumda Cloud Functions logger SDK'sı önerilir ancak aşağıdaki nedenlerden dolayı diğer seçeneklerden birini de belirleyebilirsiniz:

  • Mevcut bir kod tabanınız var ve console.log ürününden yeniden düzenleme yapmayı tercih etmiyorsunuz.
  • Cloud Logging (eski adıyla StackDriver Logging) hakkında bilgi sahibisiniz ve bu hizmeti özel günlük kaydı için kullanmayı tercih ediyorsunuz.

Cloud Functions logger SDK'sını kullanma

Cloud Functions logger SDK'sı, console.log ifadelerine benzer bir API'ye sahip ve diğer günlük seviyelerini destekleyen standart bir arayüz sunar. Etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek için bu SDK'yı kullanarak analiz ve izlemeyi kolaylaştırabilirsiniz.

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

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

  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üğe 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üzeyindedir.
  • logger.info() komutları INFO günlük düzeyindedir.
  • logger.warn() komutları WARNING 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() kullanarak CRITICAL, ALERT ve EMERGENCY şeklinde günlük girişleri ve günlük önem düzeyleri yazabilirsiniz. LogSeverity'ye bakın.

Özel Cloud Logging günlükleri

Günlük kaydedici SDK'sına sahip Cloud Functions günlükleri Cloud Logging tarafından desteklenir. Etkinlikleri yapılandırılmış verilerle günlüğe kaydetmek amacıyla Node.js için Cloud Logging kitaplığını kullanarak analiz ve izlemeyi kolaylaştırabilirsiniz.

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ı için önerilen çözüm, platformunuz için logger SDK'sını kullanmaktır. Node.js ile bunun yerine console.log ve console.error gibi standart JavaScript günlük kaydı çağrılarını kullanabilirsiniz. Ancak öncelikle, standart yöntemlerin doğru şekilde çalışması için özel bir modüle ihtiyacınız olur:

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

Günlük kaydı uyumluluk modülünü zorunlu hale getirdikten sonra, kodunuzda normal şekilde console.log() yöntemlerini 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üzeyindedir.
  • console.info() komutları INFO günlük düzeyindedir.
  • 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 Console'da, Cloud Logging kullanıcı arayüzünde veya firebase komut satırı aracı üzerinden 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 yardımına bakın:

firebase help functions:log

Google Cloud Console'u kullanma

Google Cloud Console'da işlevlerle ilgili günlükleri görüntüleyebilirsiniz.

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

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

Günlükleri analiz etme

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

Grafikler ve uyarılar

İşlevlerinizi izlemek için günlük tabanlı metrikler oluşturduktan sonra bu metriklere dayalı grafikler ve uyarılar oluşturabilirsiniz. Örneğin, zaman içindeki gecikmeyi görselleştirmek için bir grafik veya belirli bir hatanın çok sık yaşanıp yaşanmadığını bildiren bir uyarı oluşturabilirsiniz.

Günlük tabanlı metriklerin grafiklerde ve uyarı politikalarında nasıl kullanılacağı hakkında ayrıntılı bilgi için Grafik ve Uyarılar Oluşturma bölümüne bakın.