读取和写入 Cloud Run functions 函数日志
写入运行时日志
默认情况下,Cloud Functions 包含简单的运行时日志记录功能。写入 stdout
或 stderr
的日志将自动显示在 Google Cloud 控制台中。如需了解更高级的日志记录功能,请使用 Cloud Logging 客户端库。
默认情况下,日志载荷是一个简单的文本字符串,如以下代码段所示。该字符串存储在日志条目的 textPayload
字段中。
Node.js
大多数日志条目没有关联的日志级别。其中包括:- 使用
console.log()
、console.info()
、console.warn()
或console.error()
发出的日志 - 直接写入
stdout
或stderr
的日志
内部系统消息的日志级别为 DEBUG
。
Python
- 标准输出或标准错误日志没有关联的日志级别。
- 内部系统消息的日志级别为
DEBUG
。
Go
- 写入
stdout
或stderr
的日志没有关联的日志级别。 - 内部系统消息的日志级别为
DEBUG
。
Java
- 写入
stdout
或stderr
的日志没有关联的日志级别。 - 内部系统消息的日志级别为
DEBUG
。
C#
- 写入
stdout
(例如,通过Console.WriteLine
)和stderr
(例如,通过Console.Error.WriteLine
)的文本没有日志级别。 - ASP.NET Core 日志记录级别会映射到 Cloud Logging 级别,如下所示:
LogLevel.Trace
和LogLevel.Debug map
映射到 Cloud LoggingDEBUG
。LogLevel.Information
映射到 Cloud LoggingINFO
。LogLevel.Warning
映射到 Cloud LoggingWARNING
。LogLevel.Error
映射到 Cloud LoggingERROR
。LogLevel.Critical
映射到 Cloud LoggingCRITICAL
。
Ruby
日志条目没有关联的日志级别。
PHP
写入结构化日志
上述默认文本日志没有关联的日志级别。如果您要在日志条目中包含日志级别或其他特定字段,您可以以单行序列化 JSON 的形式将日志写入 stdout
或 stderr
。此行由 Cloud Functions 函数获取并解析,然后放入 jsonPayload
字段而不是 textPayload
。以下代码段演示了如何写入此类结构化日志。
Node.js
Python
Python 3.8 及更高版本提供结构化日志记录支持。
Go
每个日志条目的结构由 Entry
类型提供:
记录 Entry struct 时,调用 String
方法以将其编组为 Cloud Logging 预期的 JSON 格式:
Java
通过在 logback.xml
配置中启用 Logstash JSON 编码器,以使用 Logback 和 SLF4J 启用 JSON 日志记录。
处理消息中的特殊 JSON 字段
如果您以 JSON 字典形式提供结构化数据,则系统会从 jsonPayload
中删除某些特殊字段,并将这些字段写入所生成 LogEntry
中的相应字段(具体说明请参阅特殊字段文档)。
例如,如果您的 JSON 包含 severity
属性,则系统会将该属性从 jsonPayload
中移除,并将其显示为日志条目的 severity
。message
属性用作日志条目的主显示文本(如果存在)。
使用客户端库写入日志
Cloud Logging 客户端库提供了写入日志的其他方法。借助这些库,您可以使用编程语言的标准日志记录机制,并与各种支持的日志记录框架集成。客户端库还会自动捕获一些信息并提供接口来适当填充字段,从而简化特殊 JSON 字段的填充过程。
您可以通过客户端库以同步或异步方式使用 Cloud Logging API 写入日志。某些客户端库还支持直接将结构化日志写入 stdout
或 stderr
。请注意,如果您以异步方式写入日志,则意外的函数终止可能会导致日志条目丢失。另请注意,使用 Logging API 进行同步日志记录会增加函数执行时间,因为它需要等待 API 调用完成。
查看运行时日志
本部分介绍了查看运行时日志的选项。
使用命令行工具
您可以在 Cloud Logging 界面中查看 Cloud Run 函数的日志,也可以使用 Google Cloud CLI 查看。
如需使用 gcloud CLI 查看日志,请使用 gcloud functions logs read
命令:
gcloud functions logs read
如需查看特定函数的日志,请以参数形式提供函数名称:
gcloud functions logs read FUNCTION_NAME
使用以下命令查看特定执行的日志:
gcloud functions logs read FUNCTION_NAME --execution-id EXECUTION_ID
如需了解全部日志查看选项,请参阅 gcloud functions logs read
的文档。
使用 Logging 信息中心
您还可以在 Google Cloud 控制台中查看 Cloud Functions 的运行时日志。
使用 Logging API
您还可以通过 Cloud Logging API 写入和检索运行时日志。Cloud Logging 客户端库提供了 Logging API 的惯用接口:
Node.js
如需了解详情,请参阅 Node.js 客户端库参考。Python
如需了解详情,请参阅 Python 客户端库参考。Go
如需了解详情,请参阅 Go 客户端库参考。Java
如需了解详情,请参阅 Java 客户端库参考。C#
Ruby
PHP
如需了解 Java 的额外日志记录选项,请参阅 Java 日志记录。
响应运行时日志
如需响应 Cloud Logging 事件,您可以将其日志转发到 Cloud Functions 函数。如需了解详情,请参阅使用 Cloud Logging 的第二方触发器页面。
查看构建映像日志
您还可以查看部署过程的构建映像步骤的日志。请点击链接了解详情。