Menulis dan melihat log


Logging adalah alat penting untuk proses debug dan pemantauan kode. Cloud Functions memberi Anda opsi untuk menggunakan SDK logger Cloud Functions, Google Cloud Logging kustom, atau standar objek console untuk pengembangan web.

Menulis log

Meskipun SDK logger Cloud Functions direkomendasikan untuk sebagian besar situasi, Anda dapat memilih salah satu opsi lainnya karena alasan berikut:

  • Anda sudah memiliki code base dan memilih untuk tidak melakukan pemfaktoran ulang dari console.log.
  • Anda sudah terbiasa dengan Cloud Logging (sebelumnya StackDriver Logging) dan memilih menggunakannya untuk logging kustom.

Menggunakan SDK logger Cloud Functions

SDK logger Cloud Functions menyediakan antarmuka standar yang memiliki API serupa dengan pernyataan console.log dan mendukung level log lainnya. Anda dapat menggunakan SDK ini untuk mencatat peristiwa ke dalam log dengan data terstruktur, sehingga memudahkan analisis dan pemantauan.

SDK logger mendukung entri log sebagai bagian dari impor karakter pengganti. Misalnya:

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

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

Sebagai alternatif, Anda dapat menggunakan ekspor individual. Contoh ini menunjukkan data terstruktur yang dilampirkan ke log sebagai argumen terakhir:

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'
});
  • Perintah logger.log() memiliki level log INFO.
  • Perintah logger.info() memiliki level log INFO.
  • Perintah logger.warn() memiliki level log WARNING.
  • Perintah logger.error() memiliki level log ERROR.
  • Pesan sistem internal memiliki level log DEBUG.

Dengan logger.write(), Anda dapat menulis level keparahan log tambahan entri log CRITICAL, ALERT, dan EMERGENCY. Lihat LogSeverity.

Log Cloud Logging kustom

Log Cloud Functions dengan SDK logger didukung oleh Cloud Logging. Anda dapat menggunakan library Cloud Logging untuk Node.js guna mencatat peristiwa ke dalam log dengan data terstruktur, sehingga mempermudah analisis dan pemantauan.

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);

Menggunakan console.log

Solusi yang direkomendasikan untuk melakukan logging dari fungsi adalah dengan menggunakan SDK logger. Sebagai gantinya, Anda dapat menggunakan panggilan logging JavaScript standar seperti console.log dan console.error, tetapi Anda harus terlebih dahulu mewajibkan modul khusus untuk menerapkan patch pada metode standar agar berfungsi dengan benar:

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

Setelah mewajibkan modul kompatibilitas logger, Anda dapat menggunakan metode console.log() seperti biasa dalam kode Anda:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • Perintah console.log() memiliki level log INFO.
  • Perintah console.info() memiliki level log INFO.
  • Perintah console.warn() memiliki level log ERROR.
  • Perintah console.error() memiliki level log ERROR.
  • Pesan sistem internal memiliki level log DEBUG.

Melihat log

Log untuk Cloud Functions dapat dilihat di Google Cloud Console, UI Cloud Logging, atau melalui alat command line firebase.

Menggunakan Firebase CLI

Untuk melihat log dengan alat firebase, gunakan perintah functions:log:

firebase functions:log

Untuk melihat log fungsi tertentu, masukkan nama fungsi sebagai argumen:

firebase functions:log --only <FUNCTION_NAME>

Untuk mengetahui berbagai opsi tampilan log, lihat bantuan untuk functions:log:

firebase help functions:log

Menggunakan Google Cloud Console

Anda dapat melihat log untuk fungsi di Google Cloud Console.

Menggunakan UI Cloud Logging

Anda dapat melihat log untuk Cloud Functions di UI Cloud Logging.

Menganalisis log

Cloud Logging menawarkan serangkaian alat analisis log yang canggih dan dapat Anda gunakan untuk memantau Cloud Functions.

Diagram dan pemberitahuan

Setelah membuat metrik berbasis log untuk memantau fungsi, Anda dapat membuat diagram dan pemberitahuan berdasarkan metrik ini. Misalnya, Anda bisa membuat diagram untuk memvisualisasikan latensi dari waktu ke waktu, atau membuat pemberitahuan yang akan muncul jika error tertentu terlalu sering terjadi.

Baca Membuat Diagram dan Pemberitahuan untuk mengetahui informasi selengkapnya mengenai cara menggunakan metrik berbasis log dalam diagram dan kebijakan pemberitahuan.