Ikuti semua informasi yang diumumkan di Firebase Summit, dan pelajari bagaimana Firebase dapat membantu Anda mempercepat pengembangan aplikasi dan menjalankan aplikasi dengan percaya diri. Pelajari Lebih Lanjut

Tulis dan lihat log

Logging adalah alat penting untuk debugging dan pemantauan kode. Cloud Functions memberi Anda opsi untuk menggunakan SDK logger, 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 lain karena alasan berikut:

  • Anda memiliki basis kode yang sudah ada dan memilih untuk tidak melakukan refactor dari console.log .
  • Anda sudah terbiasa dengan Cloud Logging (sebelumnya StackDriver logging) dan lebih suka 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 dengan data terstruktur , memungkinkan analisis dan pemantauan yang lebih mudah.

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

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

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

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

Dengan logger.write() , Anda dapat menulis entri log tambahan tingkat keparahan log CRITICAL , ALERT , dan EMERGENCY . Lihat Keparahan Log .

Log Cloud Logging Kustom

Log Cloud Functions dengan logger SDK didukung oleh Cloud Logging . Anda dapat menggunakan library Cloud Logging untuk Node.js untuk membuat log peristiwa dengan data terstruktur, memungkinkan analisis dan pemantauan yang lebih mudah.

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 disarankan untuk masuk dari suatu fungsi adalah dengan menggunakan SDK logger . Sebagai gantinya, Anda dapat menggunakan panggilan logging JavaScript standar seperti console.log dan console.error , tetapi pertama-tama Anda harus meminta modul khusus untuk menambal metode standar agar berfungsi dengan benar:

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

Setelah Anda memerlukan 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 tingkat log DEBUG .

Melihat log

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

Menggunakan Firebase CLI

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

firebase functions:log

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

firebase functions:log --only <FUNCTION_NAME>

Untuk rangkaian lengkap 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 rangkaian alat analisis log yang andal yang dapat Anda gunakan untuk memantau Cloud Functions Anda. Alat-alat ini sangat kuat bila digabungkan dengan pembuatan log khusus .

Metrik berbasis log

Di UI Cloud Logging, gunakan kolom filter lanjutan untuk mempersempit cakupan log ke fungsi yang ingin Anda analisis, lalu klik Kirim Filter untuk memfilter log. Misalnya, Anda hanya dapat menganalisis log dari satu fungsi:

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

Jika Anda mencatat peristiwa dengan payload JSON khusus, Anda dapat memfilter menggunakan kunci dan nilai yang Anda berikan:

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

Setelah memfilter log, Anda dapat menganalisisnya menggunakan metrik berbasis log . Klik tombol Buat Metrik untuk membuka editor metrik dan pilih jenis metrik:

  • Metrik penghitung: hitung jumlah entri log yang cocok dengan filter. Misalnya, Anda dapat menghitung berapa kali peristiwa tertentu terjadi.
  • Metrik distribusi: kumpulkan data numerik dari entri log yang cocok dengan filter. Misalnya, Anda dapat melacak latensi operasi tertentu dalam fungsi Anda.

Untuk log berbasis teks, seperti yang dihasilkan dari console.log() dalam fungsi Anda, Anda bisa mengekstrak nilai dan label dari bidang textPayload menggunakan ekspresi reguler. Untuk log khusus dengan data terstruktur, Anda dapat langsung mengakses data di bidang jsonPayload .

Bagan dan peringatan

Setelah membuat metrik berbasis log untuk memantau fungsi, Anda dapat membuat bagan dan peringatan berdasarkan metrik ini. Misalnya, Anda dapat membuat bagan untuk memvisualisasikan latensi dari waktu ke waktu, atau membuat peringatan untuk memberi tahu Anda jika kesalahan tertentu terlalu sering terjadi.

Lihat Membuat Bagan dan Peringatan untuk informasi mendetail tentang cara menggunakan metrik berbasis log di bagan dan kebijakan pemberitahuan.