获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

写入和查看日志

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。

日志记录是调试和监控代码的重要工具。 Cloud Functions 让您可以选择使用其记录器 SDK、自定义 Google Cloud Logging 或用于 Web 开发的console对象标准。

写日志

虽然在大多数情况下建议使用 Cloud Functions记录器SDK,但您可能会出于以下原因选择其他选项之一:

  • 您有一个现有的代码库并且不想从console.log重构。
  • 您熟悉 Cloud Logging(以前称为 StackDriver 日志记录)并且更喜欢将其用于自定义日志记录。

使用 Cloud Functions 记录器 SDK

Cloud Functions 记录器 SDK 提供了一个标准接口,该接口具有与console.log语句类似的 api,并支持其他日志级别。您可以使用此 SDK 记录具有结构化数据的事件,从而更轻松地进行分析和监控。

记录器 SDK 支持将日志条目作为通配符导入的一部分。例如:

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

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

或者,您可以使用单独的导出。此示例演示了作为最后一个参数附加到日志的结构化数据:

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()命令具有INFO日志级别。
  • logger.info()命令具有INFO日志级别。
  • logger.warn()命令具有ERROR日志级别。
  • logger.error()命令具有ERROR日志级别。
  • 内部系统消息具有DEBUG日志级别。

使用logger.write() ,您可以写入日志条目添加日志严重级别CRITICALALERTEMERGENCY 。请参阅日志严重性

自定义 Cloud Logging 日志

带有记录器 SDK 的 Cloud Functions 日志由Cloud Logging提供支持。您可以使用适用于 Node.js 的 Cloud Logging 库来记录具有结构化数据的事件,从而更轻松地进行分析和监控。

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/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()命令具有ERROR日志级别。
  • console.error()命令具有ERROR日志级别。
  • 内部系统消息具有DEBUG日志级别。

查看日志

Cloud Functions 的日志可以在Google Cloud Console 、Cloud Logging UI 或通过firebase命令行工具查看。

使用 Firebase CLI

要使用firebase工具查看日志,请使用functions:log命令:

firebase functions:log

要查看特定函数的日志,请提供函数名称作为参数:

firebase functions:log --only <FUNCTION_NAME>

有关完整的日志查看选项,请查看functions:log的帮助:

firebase help functions:log

使用谷歌云端控制台

您可以在Google Cloud Console中查看函数日志。

使用 Cloud Logging 界面

您可以在 Cloud Logging UI 中查看 Cloud Functions的日志。

分析日志

Cloud Logging 提供了一套功能强大的日志分析工具,您可以使用它们来监控您的 Cloud Functions。这些工具在与自定义日志记录结合使用时特别强大。

基于日志的指标

在 Cloud Logging 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字段中的数据。

图表和警报

一旦您创建了基于日志的指标来监控您的功能,您就可以根据这些指标创建图表和警报。例如,您可以创建一个图表来可视化随时间变化的延迟,或者创建一个警报来让您知道某个错误是否经常发生。

有关如何在图表和警报策略中使用基于日志的指标的详细信息,请参阅创建图表和警报