日志级别筛选
Lambda 可以筛选函数的日志,以便仅将不超过特定详细信息级别的日志发送到 CloudWatch Logs。您可以分别为函数的系统日志(Lambda 生成的日志)和应用程序日志(您的函数代码生成的日志)单独配置日志级别筛选。
对于 支持的运行时系统和日志记录方法,要筛选函数的应用程序日志,无需对 Lambda 的函数代码进行任何更改。
对于所有其他运行时系统和日志记录方法,您的函数代码必须将日志事件作为 JSON 格式的对象输出到 stdout
或 stderr
,并在其中包含键 "level"
的键值对。例如,Lambda 将以下到 stdout
的输出解释为调试级别的日志。
print('{"level": "debug", "msg": "my debug log", "timestamp": "2024-11-02T16:51:31.587199Z"}')
如果 "level"
值字段无效或缺失,Lambda 将为日志输出分配 INFO 级别。要让 Lambda 使用时间戳字段,您必须以有效的 RFC 3339
命名时间戳键时,请遵循所用运行时系统的惯例。Lambda 支持托管运行时系统使用的大多数常用命名惯例。
注意
要使用日志级别筛选,必须将您的函数配置为使用 JSON 日志格式。目前,所有 Lambda 托管运行时系统的默认日志格式均为纯文本。要了解如何将函数的日志格式配置为 JSON,请参阅 设置函数的日志格式。
对于应用程序日志(由函数代码生成的日志),您可以从以下日志级别中进行选择。
日志级别 | 标准使用情况 |
---|---|
TRACE(最详细) | 用于跟踪代码执行路径的最精细信息 |
调试 | 系统调试的详细信息 |
INFO | 记录函数正常运行情况的消息 |
警告 | 有关潜在错误的消息,如果不加以解决,这些错误可能会导致意外行为 |
ERROR | 有关会阻碍代码按预期执行的问题的消息 |
FATAL(最简略) | 有关导致应用程序停止运行的严重错误的消息 |
当您选择日志级别后,Lambda 会将该级别及更低级别的日志发送到 CloudWatch Logs。例如,如果您将函数的应用程序日志级别设置为 WARN,则 Lambda 不会发送 INFO 和 DEBUG 级别的日志输出。日志筛选的默认应用程序日志级别为 INFO。
当 Lambda 筛选函数的应用程序日志时,将为没有级别的日志消息分配日志级别 INFO。
对于系统日志(由 Lambda 服务生成的日志),您可以在以下日志级别之间进行选择。
日志级别 | 使用量 |
---|---|
DEBUG(最详细) | 系统调试的详细信息 |
INFO | 记录函数正常运行情况的消息 |
WARN(最简略) | 有关潜在错误的消息,如果不加以解决,这些错误可能会导致意外行为 |
当您选择日志级别后,Lambda 会发送该级别及更低级别的日志。例如,如果您将函数的系统日志级别设置为 INFO,则 Lambda 不会发送 DEBUG 级别的日志输出。
默认情况下,Lambda 会将系统日志级别设置为 INFO。使用此设置,Lambda 会自动向 CloudWatch 发送 "start"
和 "report"
日志消息。要接收不同详细程度的系统日志,请将日志级别更改为 DEBUG 或 WARN。要查看 Lambda 将不同系统日志事件映射到的日志级别列表,请参阅 系统日志级别的事件映射。
配置日志级别筛选
要为您的函数配置应用程序和系统日志级别的筛选,您可以使用 Lambda 控制台或 Amazon Command Line Interface(Amazon CLI)。您还可以使用 CreateFunction 和 UpdateFunctionConfiguration Lambda API 命令、Amazon Serverless Application Model(Amazon SAM)AWS::Serverless::Function 资源以及 Amazon CloudFormation AWS::Lambda::Function 资源来配置函数的日志级别。
请注意,如果在代码中设置函数的日志级别,则此设置将优先于您配置的任何其他日志级别设置。例如,如果您通过 Python logging
setLevel()
方法将函数的日志级别设置为 INFO,则此设置将优先于您通过 Lambda 控制台配置的 WARN 设置。
配置现有函数的应用程序或系统日志级别(控制台)
打开 Lamba 控制台的 Functions
(函数)页面。 -
选择函数。
-
在函数配置页面上,选择监控和操作工具。
-
在日志记录配置窗格中,选择编辑。
-
在日志内容下,确保为日志格式选择 JSON。
-
使用单选按钮,为您的函数选择所需的应用程序日志级别和系统日志级别。
-
选择保存。
配置现有函数的应用程序或系统日志级别(Amazon CLI)
-
要更改现有函数的应用程序或系统日志级别,请使用 update-function-configuration
命令。使用 --logging-config
将SystemLogLevel
设为DEBUG
、INFO
或WARN
。将ApplicationLogLevel
设置为DEBUG
、INFO
、WARN
、ERROR
或FATAL
之一。aws lambda update-function-configuration \ --function-name myFunction \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
在创建函数时配置日志级别筛选
-
要在创建新函数时配置日志级别筛选,请在 create-function
命令中使用 --logging-config
来设置SystemLogLevel
和ApplicationLogLevel
键。将SystemLogLevel
设置为DEBUG
、INFO
或WARN
之一。将ApplicationLogLevel
设置为DEBUG
、INFO
、WARN
、ERROR
或FATAL
之一。aws lambda create-function \ --function-name myFunction \ --runtime nodejs22.x \ --handler index.handler \ --zip-file fileb://function.zip \ --role arn:aws:iam::123456789012:role/LambdaRole \ --logging-config LogFormat=JSON,ApplicationLogLevel=ERROR,SystemLogLevel=WARN
系统日志级别的事件映射
对于 Lambda 生成的系统级日志事件,下表定义了分配给每个事件的日志级别。要了解有关表中所列事件的更多信息,请参阅 Lambda 遥测 API Event 架构参考
事件名称 | 状况 | 分配的日志级别 |
---|---|---|
initStart | 已设置 runtimeVersion | INFO |
initStart | 未设置 runtimeVersion | 调试 |
initRuntimeDone | status=success | 调试 |
initRuntimeDone | status!=success | 警告 |
initReport | initializationType!=on-demand | INFO |
initReport | initializationType=on-demand | 调试 |
initReport | status!=success | 警告 |
restoreStart | 已设置 runtimeVersion | INFO |
restoreStart | 未设置 runtimeVersion | 调试 |
restoreRuntimeDone | status=success | 调试 |
restoreRuntimeDone | status!=success | 警告 |
restoreReport | status=success | INFO |
restoreReport | status!=success | 警告 |
开启 | - | INFO |
runtimeDone | status=success | 调试 |
runtimeDone | status!=success | 警告 |
报告 | status=success | INFO |
报告 | status!=success | 警告 |
extension | state=success | INFO |
extension | state!=success | 警告 |
logSubscription | - | INFO |
telemetrySubscription | - | INFO |
logsDropped | - | 警告 |
注意
使用遥测 API 访问扩展的实时遥测数据 始终会发出一整套平台事件。配置 Lambda 发送到 CloudWatch 的系统日志的级别不会影响 Lambda 遥测 API 的行为。
使用自定义运行时系统进行应用程序日志级别筛选
当您为函数配置应用程序日志级别筛选时,Lambda 会在后台使用 AWS_LAMBDA_LOG_LEVEL
环境变量在运行时系统中设置应用程序日志级别。Lambda 还会使用 AWS_LAMBDA_LOG_FORMAT
环境变量设置函数的日志格式。您可以使用这些变量将 Lambda 高级日志记录控件集成到自定义运行时系统中。
要使用自定义运行时系统通过 Lambda 控制台、Amazon CLI 和 Lambda API 为函数配置日志记录设置,请配置您的自定义运行时系统以检查这些环境变量的值。然后,您可以根据所选的日志格式和日志级别配置运行时系统的记录器。