

# 为 AWS Glue 4.0 和更早期版本作业启用连续日志记录
<a name="monitor-continuous-logging-enable"></a>

**注意**  
 AWS Glue 4.0 及更早期版本提供了连续日志记录功能。但在 AWS Glue 5.0 推出后，所有作业都已具有实时日志记录功能。有关 AWS Glue 5.0 中日志记录功能和配置选项的更多详细信息，请参阅 [AWS Glue 作业的日志记录](https://docs.aws.amazon.com/glue/latest/dg/monitor-continuous-logging.html)。

您可使用 AWS Glue 控制台或通过 AWS Command Line Interface (AWS CLI) 启用连续日志记录。

您可以在创建新作业或编辑现有作业时启用连续日志记录，也可通过 AWS CLI 启用此功能。

您还可以指定自定义配置选项，例如 Amazon CloudWatch 日志组名称、AWS Glue 任务运行 ID 驱动程序/执行程序 ID 之前的 CloudWatch 日志流前缀，以及日志消息的日志转换模式。这些配置可帮助您在具有不同到期策略的自定义 CloudWatch 日志组中设置聚合日志，并使用自定义日志流前缀和转换模式对它们进行进一步分析。

**Topics**
+ [使用 AWS 管理控制台](#monitor-continuous-logging-enable-console)
+ [使用自定义脚本日志记录程序记录特定于应用程序的消息](#monitor-continuous-logging-script)
+ [启用进度栏以显示作业进度](#monitor-continuous-logging-progress)
+ [采用连续日志记录的安全配置](#monitor-logging-encrypt-log-data)

## 使用 AWS 管理控制台
<a name="monitor-continuous-logging-enable-console"></a>

在创建或编辑 AWS Glue 作业时，按照以下步骤使用控制台来启用连续日志记录。

**创建带有连续日志记录的新 AWS Glue 作业**

1. 登录 AWS 管理控制台，然后打开 AWS Glue 控制台，网址为：[https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/)。

1. 在导航窗格中，选择 **ETL 作业**。

1. 选择 **Visual ETL**。

1. 在**作业详细信息**选项卡中，展开**高级属性**部分。

1. 在**持续日志记录**下，选择**启用 CloudWatch 中的日志**。

**为现有 AWS Glue 作业启用连续日志记录**

1. 通过 [https://console.aws.amazon.com/glue/](https://console.aws.amazon.com/glue/) 打开 AWS Glue 控制台。

1. 在导航窗格中，选择**作业**。

1. 从**作业**列表选择现有作业。

1. 选择**操作**和**编辑作业**。

1. 在**作业详细信息**选项卡中，展开**高级属性**部分。

1. 在**持续日志记录**下，选择**启用 CloudWatch 中的日志**。

### 使用 AWS CLI
<a name="monitor-continuous-logging-cli"></a>

要启用连续日志记录，您需要将作业参数传入 AWS Glue 作业。通过类似于其他 AWS Glue 作业参数的方法，传递以下特殊作业参数。有关更多信息，请参阅 [在 AWS Glue 作业中使用作业参数](aws-glue-programming-etl-glue-arguments.md)。

```
'--enable-continuous-cloudwatch-log': 'true'
```

您可以指定自定义 Amazon CloudWatch 日志组名称。如果未指定，则默认日志组名称为 `/aws-glue/jobs/logs-v2`。

```
'--continuous-log-logGroup': 'custom_log_group_name'
```

您可以指定自定义 Amazon CloudWatch 日志流前缀。如果未指定，则默认日志流前缀为作业运行 ID。

```
'--continuous-log-logStreamPrefix': 'custom_log_stream_prefix'
```

您可以指定自定义连续日志记录转换模式。如果未指定，则默认转换模式为 `%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n`。请注意，转换模式仅适用于驱动程序日志和执行程序日志。它不会影响 AWS Glue 进度条。

```
'--continuous-log-conversionPattern': 'custom_log_conversion_pattern'
```

## 使用自定义脚本日志记录程序记录特定于应用程序的消息
<a name="monitor-continuous-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-continuous-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]
```

## 采用连续日志记录的安全配置
<a name="monitor-logging-encrypt-log-data"></a>

如果为 CloudWatch 日志启用了安全配置，AWS Glue 将为连续日志创建一个名称如下的日志组：

```
<Log-Group-Name>-<Security-Configuration-Name>
```

默认日志组和自定义日志组将如下所示：
+ 默认连续日志组将为 `/aws-glue/jobs/error-<Security-Configuration-Name>`
+ 自定义连续日志组将为 `<custom-log-group-name>-<Security-Configuration-Name>`

您需要将 `logs:AssociateKmsKey` 添加到您的 IAM 角色权限（如果您使用 CloudWatch Logs 启用了安全配置）。如果不包括该权限，连续日志记录将禁用。此外，要为 CloudWatch Logs 配置加密，请遵循《Amazon CloudWatch Logs 用户指南》**中的[使用 AWS Key Management Service 加密 CloudWatch Logs 中日志数据](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/encrypt-log-data-kms.html)处的说明。

有关创建安全配置的更多信息，请参阅 [在 AWS Glue 控制台上管理安全配置](console-security-configurations.md)。

**注意**  
 启用日志记录并创建额外的 CloudWatch 日志事件时，可能会产生额外的费用。有关更多信息，请参阅 [Amazon CloudWatch 定价](https://aws.amazon.com/cloudwatch/pricing/)。