

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

# 記錄 AWS Glue 任務
<a name="monitor-continuous-logging"></a>

 在 AWS Glue 5.0 中，所有任務都具有即時記錄功能。此外，可以指定自訂組態選項來量身打造記錄行為。這些選項包括設定 Amazon CloudWatch 日誌群組名稱、 Amazon CloudWatch 日誌串流字首 （在 AWS Glue 任務執行 ID 和驅動程式/執行器 ID 之前），以及日誌訊息的日誌轉換模式。這些組態可讓您在具有不同過期政策的自訂 Amazon CloudWatch 日誌群組中彙總日誌。此外，可以使用自訂日誌串流字首和轉換模式，更有效地分析日誌。此自訂層級可讓您根據特定需求來最佳化日誌管理和分析。

## AWS Glue 5.0 中的記錄行為
<a name="monitor-logging-behavior-glue-50"></a>

 根據預設，系統會將系統日誌、Spark 協助程式日誌和使用者 AWS Glue 日誌寫入 中的`/aws-glue/jobs/error`日誌群組 Amazon CloudWatch。另一方面，使用者 stdout (標準輸出) 和 stderr (標準錯誤) 日誌預設會寫入到 `/aws-glue/jobs/output` 日誌群組。

## 自訂記錄
<a name="monitor-logging-custom"></a>

 可以使用下列任務引數來自訂預設日誌群組和日誌串流字首：
+  `--custom-logGroup-prefix`：可讓您指定 `/aws-glue/jobs/error` 和 `/aws-glue/jobs/output` 日誌群組的自訂字首。如果您提供自訂字首，日誌群組名稱的格式如下：
  +  `/aws-glue/jobs/error` 將為 `{{<customer prefix>}}/error` 
  +  `/aws-glue/jobs/output ` 將為 `{{<customer prefix>}}/output` 
+  `--custom-logStream-prefix`：可讓您為日誌群組中的日誌串流名稱指定自訂字首。如果您提供自訂字首，日誌串流名稱的格式如下：
  +  `jobrunid-driver` 將為 `{{<customer log stream>}}-driver` 
  +  `jobrunid-executorNum` 將為 `{{<customer log stream>}}-executorNum` 

 自訂字首的驗證規則和限制：
+  整個日誌串流名稱的長度必須介於 1 到 512 個字元之間。
+  自訂字首本身限制為 400 個字元。
+  自訂字首必須符合規則表達式模式 `[^:\*]\*` (允許的特殊字元為 '\_'、'-' 和 '/')。

## 使用自訂指令碼記錄器記錄應用程式特定訊息
<a name="monitor-logging-script"></a>

您可以使用 AWS Glue 記錄器，在指令碼中記錄即時傳送到驅動程式日誌串流的任何應用程式特定訊息。

以下範例顯示 Python 指令碼。

```
from awsglue.context import GlueContext
from pyspark.context import SparkContext

sc = SparkContext()
glueContext = GlueContext(sc)
logger = glueContext.get_logger()
logger.info("info message")
logger.warn("warn message")
logger.error("error message")
```

以下範例顯示 Scala 指令碼。

```
import com.amazonaws.services.glue.log.GlueLogger

object GlueApp {
  def main(sysArgs: Array[String]) {
    val logger = new GlueLogger
    logger.info("info message")
    logger.warn("warn message")
    logger.error("error message")
  }
}
```

## 啟用進度列來顯示任務進度
<a name="monitor-logging-progress"></a>

AWS Glue 在`JOB_RUN_ID-progress-bar`日誌串流下提供即時進度列，以檢查 AWS Glue 任務執行狀態。目前它僅支援初始化 `glueContext` 的任務。如果您在未初始化 的情況下執行純 Spark 任務`glueContext`，則不會顯示 AWS Glue 進度列。

進度列每 5 秒顯示一次以下的最新進度。

```
Stage Number (Stage Name): > (numCompletedTasks + numActiveTasks) / totalNumOfTasksInThisStage]
```

## 記錄的安全組態 Amazon CloudWatch
<a name="monitor-security-config-logging"></a>

 為 Amazon CloudWatch 日誌啟用安全組態時， 會使用包含安全組態名稱的特定命名模式 AWS Glue 建立日誌群組。

### 使用安全組態命名日誌群組
<a name="monitor-log-group-naming"></a>

 預設和自訂日誌群組將如下所示：
+  **預設錯誤日誌群組：**`/aws-glue/jobs/{{Security-Configuration-Name}}-role/{{glue-job-role}}/error`
+  **預設輸出日誌群組：**`/aws-glue/jobs/{{Security-Configuration-Name}}-role/{{glue-job-role}}/output`
+  **自訂錯誤日誌群組 (AWS Glue 5.0)：** `{{custom-log-group-prefix}}/{{Security-Configuration-Name}}-role/{{glue-job-role}}/error`
+  **自訂輸出日誌群組 (AWS Glue 5.0)：** `{{custom-log-group-prefix}}/{{Security-Configuration-Name}}-role/{{glue-job-role}}/output`

### 所需的 IAM 許可
<a name="monitor-logging-iam-permissions"></a>

 如果使用 Amazon CloudWatch Logs 啟用安全組態，則需要將 `logs:AssociateKmsKey` 許可新增至您的 IAM 角色許可。如果未包含該許可，則會停用連續記錄。

 此外，若要設定 Amazon CloudWatch 日誌的加密，請遵循《Amazon [ Logs 使用者指南》中的使用 在 Amazon CloudWatch 日誌中加密日誌資料 AWS Key Management Service](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)的指示。 Amazon CloudWatch 

### 其他資訊
<a name="additional-info"></a>

 如需建立安全組態的詳細資訊，請參閱在 [AWS Glue 主控台上管理安全組態](https://docs.aws.amazon.com/glue/latest/dg/console-security-configurations.html)。

**Topics**
+ [AWS Glue 5.0 中的記錄行為](#monitor-logging-behavior-glue-50)
+ [自訂記錄](#monitor-logging-custom)
+ [使用自訂指令碼記錄器記錄應用程式特定訊息](#monitor-logging-script)
+ [啟用進度列來顯示任務進度](#monitor-logging-progress)
+ [記錄的安全組態 Amazon CloudWatch](#monitor-security-config-logging)
+ [啟用持續記錄 AWS Glue 4.0 和舊版任務](monitor-continuous-logging-enable.md)
+ [檢視 AWS Glue 任務的日誌](monitor-continuous-logging-view.md)