Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

寫入和查看日誌

日誌記錄是調試和監控代碼的重要工具。雲功能讓你使用它的記錄器的SDK,自定義谷歌的Cloud紀錄,或的選項console為網絡開發對象的標準。

寫日誌

雖然雲計算功能的記錄,建議在大多數情況下SDK,您可以選擇的這些原因的其他選項之一:

  • 您有現成的代碼庫,並從不想重構console.log
  • 您熟悉 Cloud Logging(以前稱為 StackDriver 日誌記錄)並且更喜歡將其用於自定義日誌記錄。

使用 Cloud Functions 記錄器 SDK

雲功能記錄器SDK提供了具有相似的API,以一個標準接口console.log報表和支持其他的日誌級別。您可以使用此SDK來記錄與事件的結構化數據,能夠更容易地分析和監控。

記錄器 SDK 支持將日誌條目作為通配符導入的一部分。例如:

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

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

或者,您可以使用單獨的導出。此示例演示附加到日誌的結構化數據作為最後一個參數:

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()命令具有INFO日誌級別。
  • logger.info()命令具有INFO日誌級別。
  • logger.warn()命令有錯誤日誌級別。
  • logger.error()命令有錯誤日誌級別。
  • 內部系統消息有DEBUG日誌級別。

隨著logger.write()你可以寫的日誌條目除了日誌嚴重性級別CRITICALALERT ,並EMERGENCY 。見LogSeverity

自定義 Cloud Logging 日誌

雲計算與記錄器SDK函數日誌由支持Cloud紀錄。您可以使用Cloud紀錄庫Node.js的記錄與結構化數據的事件,能夠更容易地分析和監控。

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

從功能記錄推薦的解決方案是使用記錄器SDK 。您可以改用標準的JavaScript調用日誌等console.logconsole.error ,但你首先需要需要特殊的模塊正確地修補的標準方法的工作:

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

一旦你所需要的記錄器的兼容性模塊,可以使用console.log()方法,在你的代碼正常:

exports.helloError = functions.https.onRequest((request, response) => {
  console.log('I am a log entry!');
  response.send('Hello World...');
});
  • console.log()命令具有INFO日誌級別。
  • console.info()命令具有INFO日誌級別。
  • console.warn()命令有錯誤日誌級別。
  • console.error()命令有錯誤日誌級別。
  • 內部系統消息有DEBUG日誌級別。

查看日誌

雲函數日誌是可見無論是在火力地堡控制台,Cloud紀錄UI,或通過firebase命令行工具。

使用 Firebase CLI

為了與查看日誌firebase工具,使用functions:log命令:

firebase functions:log

要查看特定函數的日誌,請提供函數名稱作為參數:

firebase functions:log --only <FUNCTION_NAME>

為了全方位的日誌查看選項,查看幫助functions:log

firebase help functions:log

使用 Firebase 控制台

您可以為雲功能查看日誌從火力地堡控制台。

使用 Cloud Logging 界面

您可以為雲功能查看日誌在Cloud紀錄UI。

分析日誌

Cloud Logging 提供了一套強大的日誌分析工具,您可以使用它們來監控您的 Cloud Functions。這些工具是在與聯合特別強大的自定義日誌記錄

基於日誌的指標

在雲中記錄UI,使用先進的過濾器領域縮小日誌範圍要分析的功能,然後點擊提交過濾器來過濾日誌。例如,您可以僅分析來自單個函數的日誌:

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

如果您使用自定義 JSON 負載記錄事件,則可以使用您提供的鍵和值進行過濾:

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

一旦你已經過濾日誌,可以使用對它們進行分析基於日誌的指標。點擊創建度量標準按鈕打開度量編輯器,選擇一個指標類型:

  • 計數器度量:計數匹配過濾器的日誌條目的數量。例如,您可以計算某個事件發生的次數。
  • 分配指標:從累積匹配過濾器的日誌條目的數值數據。例如,您可以跟踪函數中某些操作的延遲。

對於基於文本的日誌,如從產生console.log()在你的職責,你可以從中提取值和標籤textPayload使用正則表達式領域。對於結構化數據的自定義日誌,你可以直接訪問數據jsonPayload領域。

圖表和警報

創建基於日誌的指標來監控您的函數後,您可以基於這些指標創建圖表和警報。例如,您可以創建一個圖表來可視化隨時間的延遲,或者創建一個警報來讓您知道某個錯誤是否經常發生。

請參閱創建圖表和警報關於如何使用的詳細信息記錄為基礎的圖表和報警政策指標。