

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 awslogs 日志驱动程序
<a name="using_awslogs"></a>

默认情况下， AWS Batch 允许`awslogs`日志驱动程序向日志发送 CloudWatch 日志信息。可以使用此功能在同一个方便的位置查看容器中的不同日志，并防止容器日志占用容器实例上的磁盘空间。本主题可帮助在作业定义中配置`awslogs`日志驱动程序。

**注意**  
在 AWS Batch 控制台中，创建作业定义时，可以在**日志配置部分配置日志**驱动程序。`awslogs`

**注意**  
作业中的容器所记录的信息类型主要取决于其`ENTRYPOINT`命令。默认情况下，捕获的日志会显示您在本地运行容器时通常在交互式终端中看到的命令输出，即`STDOUT`和`STDERR` I/O 流。`awslogs`日志驱动程序只需将这些日志从 Docker 传递到 Lo CloudWatch gs 即可。有关如何处理 Docker 日志的更多信息，包括捕获不同文件数据或流的替代方法，请参阅 Docker 文档中的[查看容器或服务的日志](https://docs.docker.com/config/containers/logging/)。

要将系统日志从您的容器实例发送到 CloudWatch 日志，请参阅[将 CloudWatch 日志与配合使用 AWS Batch](using_cloudwatch_logs.md)。有关 CloudWatch 日志的更多信息，请参阅 *Amazon [日志用户指南中的监控日志文件](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)和CloudWatch CloudWatch 日志*[配额](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)。

## awslogs 在数据类型中记录驱动程序选项 AWS Batch JobDefiniton
<a name="create_awslogs_logdriver_options"></a>

`awslogs`日志驱动程序支持 AWS Batch 作业定义中的以下选项。有关更多信息，请参阅 Docker 文档中的[CloudWatch 日志记录驱动程序](https://docs.docker.com/config/containers/logging/awslogs/)。

`awslogs-region`  
必需：否  
指定`awslogs`日志驱动程序应将 Docker 日志发送到的区域。默认情况下，使用的区域与作业的区域相同。您可以选择将来自不同区域任务的所有日志发送到 CloudWatch 日志中的单个区域。这样，所有这些信息在同一个位置可见。或者，也可以按区域将它们分开，以获得更高粒度。但是，选择此选项时，请确保指定的日志组存在于指定的区域中。

`awslogs-group`  
必需：可选  
可以使用`awslogs-group`选项，以指定`awslogs`日志驱动程序将其日志流发送到的日志组。如果未指定，则将使用`aws/batch/job`。

`awslogs-stream-prefix`  
必需：可选  
使用该`awslogs-stream-prefix`选项，您可以将日志流与指定的前缀以及容器所属任务的 Amazon ECS 任务 ID 相关联。 AWS Batch 如果使用此选项指定前缀，则日志流将采用以下格式：  

```
prefix-name/default/ecs-task-id
```

`awslogs-datetime-format`  
必需：否  
此选项以 Python `strftime` 格式定义多行开始位置模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。因此，匹配行是日志消息之间的分隔符。  
使用此格式的一个使用案例示例是用于解析输出（如堆栈转储），这可能记录在多个条目中。正确模式允许它捕获在单个条目中。  
有关更多信息，请参阅 [awslogs-datetime-format](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-datetime-format)。  
如果同时配置了`awslogs-datetime-format`和`awslogs-multiline-pattern`，此选项始终优先。  
多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对日志记录性能产生负面影响。

`awslogs-multiline-pattern`  
必需：否  
此选项使用正则表达式定义多行开始位置模式。日志消息由与模式匹配的行以及与模式不匹配的任何以下行组成。因此，匹配行是日志消息之间的分隔符。  
有关更多信息，请参阅 Docker 文档[awslogs-multiline-pattern](https://docs.docker.com/config/containers/logging/awslogs/#awslogs-multiline-pattern)中的。  
如果还配置了`awslogs-datetime-format`，则会忽略此选项。  
多行日志记录对所有日志消息执行正则表达式解析和匹配。这可能会对日志记录性能产生负面影响。

`awslogs-create-group`  
必需：否  
指定是否要自动创建日志组。如果未指定此选项，则默认为`false`。  
不建议使用该选项。我们建议您在每个作业尝试创建日志组时使用 Lo CloudWatch gs [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html)API 操作提前创建日志组，这会增加任务失败的机会。
执行角色的 IAM policy 必须包含`logs:CreateLogGroup`权限，然后才能尝试使用`awslogs-create-group`。

## 在作业定义中指定日志配置
<a name="specify-log-config"></a>

默认情况下， AWS Batch 启用`awslogs`日志驱动程序。本节介绍如何为作业自定义`awslogs`日志配置。有关更多信息，请参阅 [创建单节点作业定义](create-job-definition.md)。

以下日志配置 JSON 片段为每个作业指定了一个`logConfiguration`对象。一种用于向名为的日志组发送日志的 WordPress 作业`awslogs-wordpress`，另一种用于向名为的日志组发送日志的 MySQL 容器`awslogs-mysql`。两个容器都使用`awslogs-example`日志流前缀。

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-wordpress",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

```
"logConfiguration": {
    "logDriver": "awslogs",
    "options": {
        "awslogs-group": "awslogs-mysql",
        "awslogs-stream-prefix": "awslogs-example"
    }
}
```

在 AWS Batch 控制台中，为`wordpress`作业定义指定日志配置，如下图所示。

![\[Log configuration interface showing awslogs driver with group and stream prefix options.\]](http://docs.aws.amazon.com/zh_cn/batch/latest/userguide/images/awslogs-console-config.png)


在作业定义日志配置中向`awslogs`日志驱动程序注册任务定义后，可以提交包含该作业定义的作业，开始向日志发送日 CloudWatch 志。有关更多信息，请参阅 [教程：提交作业](submit_job.md)。