Günlükleri yazın ve görüntüleyin

Günlüğe kaydetme, kodun hatalarını ayıklamak ve izlemek için önemli bir araçtır. Cloud Functions, size kendi kaydedici SDK'sını, özel Google Cloud Logging'i veya web için geliştirme için console nesne standardını kullanma seçeneği sunar.

Günlük yazma

Çoğu durumda Bulut İşlevleri günlükçü SDK'sı önerilirken, aşağıdaki nedenlerle diğer seçeneklerden birini seçebilirsiniz:

  • Mevcut bir kod tabanınız var ve console.log yeniden düzenleme yapmayı tercih etmiyorsunuz.
  • Cloud Logging'e (eski adıyla StackDriver günlüğü) aşinasınız ve özel günlük kaydı için kullanmayı tercih ediyorsunuz.

Bulut İşlevleri günlükçü SDK'sını kullanma

Bulut İşlevleri kaydedici SDK'sı, console.log ifadelerine benzer bir API'ye sahip olan ve diğer günlük düzeylerini destekleyen standart bir arabirim sağlar. Olayları yapılandırılmış verilerle günlüğe kaydetmek için bu SDK'yı kullanabilir, böylece daha kolay analiz ve izleme yapabilirsiniz.

Günlükçü SDK'sı, bir joker karakter içe aktarmanın 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, bireysel dışa aktarmaları kullanabilirsiniz. Bu örnek, son bağımsız değişken olarak günlüğe eklenen yapılandırılmış verileri gösterir:

const { warn } = require("firebase-functions/lib/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ı HATA 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 ciddiyet düzeylerine ek olarak günlük girişleri yazabilirsiniz. LogSeverity'ye bakın.

Özel Bulut Günlüğü günlükleri

Günlükçü SDK'sı ile Cloud Functions günlükleri, Cloud Logging tarafından desteklenir. Olayları yapılandırılmış verilerle günlüğe kaydetmek için Node.js için Bulut Günlüğü kitaplığını kullanabilir, böylece 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 kullanma

Bir işlevden oturum açmak için önerilen çözüm, kaydedici SDK'sını kullanmaktır. Bunun yerine console.log ve console.error gibi standart JavaScript günlüğe kaydetme çağrılarını kullanabilirsiniz, ancak standart yöntemlerin düzgün çalışması için öncelikle özel bir modüle ihtiyaç duymanız gerekir:

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

Kaydedici uyumluluk modülüne ihtiyaç duyduğunuzda, kodunuzda normal olarak 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ü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 Console , Cloud Logging Kullanıcı Arayüzü veya firebase komut satırı aracı aracılığıyla görüntülenebilir.

Firebase CLI'yi kullanma

firebase aracıyla günlükleri 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 :

firebase help functions:log

Google Bulut Konsolunu Kullanma

Google Cloud Console'da işlevlerin günlüklerini görüntüleyebilirsiniz.

Bulut Günlüğü 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, Bulut İşlevlerinizi izlemek için kullanabileceğiniz güçlü bir günlük analiz araçları paketi sunar. Bu araçlar, özel günlük kaydıyla birleştirildiğinde özellikle güçlüdür.

Günlük tabanlı metrikler

Bulut Günlüğü Kullanıcı Arayüzü'nde, günlük kapsamını analiz etmek istediğiniz işlevle daraltmak için gelişmiş filtre alanını kullanın, ardından günlükleri filtrelemek için Filtreyi Gönder'i tıklayın. Örneğin, yalnızca tek bir işlevden gelen günlükleri analiz edebilirsiniz:

resource.type="cloud_function"
resource.labels.function_name="myCloudFunction"
resource.labels.region="us-central1"

Olayları özel JSON yükleriyle günlüğe kaydettiyseniz, sağladığınız anahtarları ve değerleri kullanarak filtre uygulayabilirsiniz:

resource.type="cloud_function"
resource.labels.function_name="CustomMetrics"
jsonPayload.event="my-event"

Günlükleri filtreledikten sonra, günlük tabanlı metrikleri kullanarak bunları analiz edebilirsiniz. Metrik düzenleyiciyi açmak ve bir metrik türü seçmek için Metrik Oluştur düğmesini tıklayın:

  • Sayaç metrikleri: Bir filtreyle eşleşen günlük girişlerinin sayısını sayın. Örneğin, belirli bir olayın meydana gelme sayısını sayabilirsiniz.
  • Dağıtım metrikleri: bir filtreyle eşleşen günlük girişlerinden sayısal veriler toplayın. Örneğin, işlevlerinizdeki belirli işlemlerin gecikmelerini takip edebilirsiniz.

İşlevlerinizdeki console.log() işlevinden kaynaklananlar gibi metin tabanlı günlükler için, normal ifadeleri kullanarak textPayload alanından değerleri ve etiketleri ayıklayabilirsiniz. Yapılandırılmış verilere sahip özel günlükler için jsonPayload alanındaki verilere doğrudan erişebilirsiniz.

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 oluşturabilir veya belirli bir hatanın çok sık meydana gelip gelmediğini size bildirmek için bir uyarı oluşturabilirsiniz.

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