

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 使用 awslogs 日誌驅動程式
<a name="using_awslogs"></a>

根據預設， 會 AWS Batch 啟用`awslogs`日誌驅動程式，將日誌資訊傳送至 CloudWatch Logs。您可以使用此功能，在一個方便的位置檢視與容器不同的日誌，並防止容器日誌佔用容器執行個體上的磁碟空間。本主題可協助您在任務定義中設定`awslogs`日誌驅動程式。

**注意**  
在 AWS Batch 主控台中，您可以在建立任務定義時，於**記錄組態**區段中設定`awslogs`日誌驅動程式。

**注意**  
您任務中的容器所記錄的資訊類型，主要取決於其`ENTRYPOINT`命令。根據預設，擷取的日誌會顯示您在本機執行容器時通常在互動式終端機中看到的命令輸出，也就是 `STDOUT`和 `STDERR` I/O 串流。`awslogs` 日誌驅動程式只會將這些日誌從 Docker 傳遞至 CloudWatch Logs。如需 Docker 日誌處理方式 (包括擷取不同檔案資料或串流的替代方法) 的詳細資訊，請參閱 Docker 文件中的[檢視容器或服務的日誌](https://docs.docker.com/config/containers/logging/)。

若要將系統日誌從容器執行個體傳送至 CloudWatch Logs，請參閱 [搭配 使用 CloudWatch Logs AWS Batch](using_cloudwatch_logs.md)。如需 CloudWatch Logs 的詳細資訊，請參閱 *《Amazon CloudWatch Logs 使用者指南》*中的[監控日誌檔案](https://docs.aws.amazon.com/AmazonCloudWatch/latest/DeveloperGuide/WhatIsCloudWatchLogs.html)和 [CloudWatch Logs 配額](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/cloudwatch_limits_cwl.html)。

## AWS Batch JobDefiniton 資料類型中的 awslogs 日誌驅動程式選項
<a name="create_awslogs_logdriver_options"></a>

`awslogs` 日誌驅動程式支援 AWS Batch 任務定義中的下列選項。如需詳細資訊，請參閱 Docker 文件中的 [CloudWatch Logs 記錄驅動程式](https://docs.docker.com/config/containers/logging/awslogs/)。

`awslogs-region`  
必要：否  
指定`awslogs`日誌驅動程式應傳送 Docker 日誌的區域。根據預設，使用的 區域與任務的區域相同。您可以選擇從不同區域中的任務將所有日誌傳送到 CloudWatch Logs 中的單一區域。這樣做可讓它們從一個位置全部可見。或者，您可以依區域分隔它們，以取得更精細的方法。不過，當您選擇此選項時，請確定指定的日誌群組存在於您指定的區域中。

`awslogs-group`  
必要：選用  
使用 `awslogs-group`選項，您可以指定`awslogs`日誌驅動程式傳送其日誌串流的目標日誌群組。如果未指定，`aws/batch/job`則會使用 。

`awslogs-stream-prefix`  
必要：選用  
使用 `awslogs-stream-prefix`選項，您可以將日誌串流與指定的字首，以及容器所屬 AWS Batch 任務的 Amazon ECS 任務 ID 建立關聯。如果您使用此選項指定前綴，則日誌串流會使用下列格式：  

```
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`。  
不建議使用此選項。我們建議您在每個任務嘗試建立日誌群組時，事先使用 CloudWatch Logs [CreateLogGroup](https://docs.aws.amazon.com/AmazonCloudWatchLogs/latest/APIReference/API_CreateLogGroup.html) API 動作建立日誌群組，增加任務失敗的機會。
在您嘗試使用 之前，執行角色的 IAM 政策必須包含 `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_tw/batch/latest/userguide/images/awslogs-console-config.png)


在任務定義日誌組態中向`awslogs`日誌驅動程式註冊任務定義後，您可以使用該任務定義提交任務，以開始將日誌傳送至 CloudWatch Logs。如需詳細資訊，請參閱[教學課程：提交任務](submit_job.md)。