

# 使用 Lambda 函数日志
<a name="monitoring-logs"></a>

为帮助您排除故障，Amazon Lambda 会代表您自动监控 Lambda 函数。您可以借助 Lambda 控制台、CloudWatch 控制台、Amazon Command Line Interface（Amazon CLI）或 CloudWatch API 查看 Lambda 函数的日志。您还可以配置 Lambda 以将日志发送到 Amazon S3 和 Firehose。

只要函数的[执行角色](lambda-intro-execution-role.md)具有必要的权限，Lambda 就会捕获函数处理的所有请求的日志，并将其发送到 Amazon CloudWatch Logs（即默认目标）。您还可以使用 Lambda 控制台将 Amazon S3 或 Firehose 配置为日志记录目标。
+ **CloudWatch Logs** 是 Lambda 函数的默认日志记录目标。CloudWatch Logs 提供实时日志查看和分析功能，并支持根据您的日志数据创建指标和警报。
+ **Amazon S3** 对于长期存储来说经济实惠，并且可以使用 Athena 等服务来分析日志。延迟通常较高。
+ **Firehose** 提供将日志流式传输到各个目标的托管服务。如果您需要将日志发送到其他 Amazon 服务（例如，OpenSearch Service 或 Redshift Data API）或第三方平台（如 Datadog、New Relic 或 Splunk），Firehose 会通过提供预构建的集成来简化该过程。您也可以流式传输到自定义 HTTP 端点，而无需设置其他基础设施。

## 选择要向其发送日志的服务目标
<a name="choosing-log-destination"></a>

选择服务作为函数日志的目标时，请考虑以下关键因素：
+ **成本管理因服务而异。**Amazon S3 通常为长期存储提供最经济的选择，而 CloudWatch Logs 允许您实时查看日志、处理日志和设置警报。Firehose 成本包括流媒体服务和与您配置流媒体相关的成本。
+ **分析功能因服务而异。**CloudWatch Logs 擅长实时监控，并与其他 CloudWatch 功能（例如 Logs Insights 和 Live Tail）原生集成。Amazon S3 可以很好地与 Athena 等分析工具配合使用，并且可以与各种服务集成，但可能需要额外的设置。Firehose 通过提供预构建的集成简化了到特定 Amazon 服务（如 OpenSearch Service 和 Redshift Data API）和支持的第三方平台（如 Datadog 和 Splunk）的直接流式传输，从而可能减少配置工作。
+ **设置和易用性因服务而异。**CloudWatch Logs 是默认的日志目标 – 它无需额外配置即可立即运行，并通过 CloudWatch 控制台提供直接的日志查看和分析。如果需要将日志发送到 Amazon S3，则需要在 Lambda 控制台中进行一些初始设置并配置存储桶权限。如果需要将日志直接发送到 OpenSearch Service 等服务或第三方分析平台，则 Firehose 可以简化该流程。

## 配置日志目标
<a name="configuring-log-destinations"></a>

Amazon Lambda 支持函数日志的多个目标。本指南说明可用的日志记录目标，并帮助您根据需要选择合适的选项。无论您选择哪个目标，Lambda 都会提供控制日志格式、筛选和传输的选项。

Lambda 支持 JSON 和纯文本格式的函数日志。JSON 结构化日志提供增强的可搜索性并支持自动分析，而纯文本日志则提供简单性并有可能降低存储成本。您可以通过配置系统日志和应用程序日志的日志级别来控制 Lambda 发送到所选目标的日志。筛选可以帮助您管理存储成本，并使您在调试期间更容易找到相关的日志条目。

有关每个目标的详细设置说明，请参阅以下各节：
+ [将 Lambda 函数日志发送到 CloudWatch Logs](monitoring-cloudwatchlogs.md)
+ [将 Lambda 函数日志发送到 Firehose](logging-with-firehose.md)
+ [将 Lambda 函数日志发送到 Amazon S3](logging-with-s3.md)

## 为 Lambda 函数配置高级日志记录控件
<a name="monitoring-cloudwatchlogs-advanced"></a>

为了让您可以更好地控制如何捕获、处理和使用函数日志，Lambda 提供了以下日志配置选项：
+ **日志格式** - 为函数日志选择纯文本或结构化的 JSON 格式。
+ **日志级别**：对于 JSON 结构化日志，选择 Lambda 发送到 CloudWatch 的日志的详细信息级别，例如 `FATAL`、`ERROR`、`WARN`、`INFO`、`DEBUG` 和 `TRACE`。
+ **日志组** - 选择您的函数发送日志的目标 CloudWatch 日志组。

要了解有关配置高级日志记录控件的更多信息，请参阅以下各节：
+ [配置 JSON 和纯文本日志格式](monitoring-cloudwatchlogs-logformat.md)
+ [日志级别筛选](monitoring-cloudwatchlogs-log-level.md)
+ [配置 CloudWatch 日志组](monitoring-cloudwatchlogs-loggroups.md)