AWS Lambda
开发人员指南

日志记录 (Python)

您的 Lambda 函数可包含日志记录语句。AWS Lambda 将这些日志写入 CloudWatch。如果您使用 Lambda 控制台调用 Lambda 函数,控制台将显示相同的日志。

以下 Python 语句生成日志条目:

  • print 语句。

  • logging 模块中的 Logger 函数(例如,logging.Logger.infologging.Logger.error)。

printlogging.* 函数将日志写入 CloudWatch Logs 中,而 logging.* 函数将额外信息写入每个日志条目中,例如时间戳和日志级别。

例如,考虑以下 Python 代码示例。

import logging logger = logging.getLogger() logger.setLevel(logging.INFO) def my_logging_handler(event, context): logger.info('got event{}'.format(event)) logger.error('something went wrong') return 'Hello from Lambda!'

由于代码示例使用 logging 模块将信息写入日志中,因此您也可以在日志中获取额外信息,例如时间戳和日志级别。日志级别标识日志的类型,例如 [INFO][ERROR][DEBUG]

您也可以在 CloudWatch 中找到这些日志。有关更多信息,请参阅 访问 AWS Lambda 的 Amazon CloudWatch 日志

可以在代码中使用 print 语句而不是使用 logging 模块,如以下 Python 示例所示:

from __future__ import print_function def lambda_handler(event, context): print('this will also show up in cloud watch')  return 'Hello World!'

在此示例中,仅将传递到打印方法的文本发送到 CloudWatch。日志条目将不会具有 logging.* 函数返回的额外信息。利用 from __future__ 语句,可以编写与 Python 2 或 3 兼容的代码。

当调用此函数时,控制台使用 RequestResponse 调用类型(同步调用)。因此它从控制台显示的AWS Lambda 中取回返回值(“Hello world!”)。

测试之前的 Python 代码(控制台)

  1. 在控制台中,使用 hello-world-python 蓝图创建 Lambda 函数。在 runtime 中,选择 Python 2.7。在 Handler 中,将 lambda_function.lambda_handler 替换为 lambda_function.my_other_logging_handler,然后在 Role 中,选择 Basic execution role。您还可以将蓝图提供的代码替换为本节中的代码。有关使用控制台创建 Lambda 函数的分步说明,请参阅 创建简单的 Lambda 函数

  2. 将模板代码替换为此部分中提供的代码。

  3. 使用 Lambda 控制台中提供的名为 Hello WorldSample event template 测试 Lambda 函数。

查找日志

可查找 Lambda 函数写入的日志,如下所示:

  • 在 AWS Lambda 控制台中 - AWS Lambda 控制台中的  Log output  部分显示这些日志。

  • 在响应标头中,当您以编程方式调用 Lambda 函数时 - 如果您以编程方式调用 Lambda 函数,则可添加 LogType 参数以检索已写入 CloudWatch 日志的最后 4 KB 的日志数据。AWS Lambda 在响应的 x-amz-log-results 标头中返回该日志信息。有关更多信息,请参阅Invoke

    如果您使用 AWS CLI 调用该函数,则可指定带有值 Tail --log-type parameter 来检索相同信息。

  • 在 CloudWatch 日志中 - 要在 CloudWatch 中查找您的日志,您需要知道日志组名称和日志流名称。您可以在代码中使用 context.log_group_namecontext.log_stream_name 属性来获取此信息。在运行 Lambda 函数时,控制台或 CLI 中生成的日志将会向您显示日志组名称和日志流名称。

本页内容: