AWS Glue Job持续日志配置异常:日志未全部写入自定义日志组
AWS Glue 自定义日志组配置遗漏项排查
问题场景
已为AWS Glue Job启用持续日志,配置参数如下:
--enable-continuous-cloudwatch-log= true--enable-continuous-log-filter= false--continuous-log-logStreamPrefix= test--continuous-log-logGroupName(或--continuous-log-logGroup)= custom_log_group
但日志行为不符合预期:
- CloudWatch的「All Logs」链接仍指向默认日志组
/aws-glue/jobs/logs-v2,自定义日志组仅包含Glue上下文日志,缺失作业引用的Java库日志 - 「Output Logs」默认指向
/aws-glue/jobs/output - 「Error Logs」默认指向
/aws-glue/jobs/error,且所有Java库日志都输出到这里
遗漏配置及修复方案
要实现所有日志(含Glue上下文、Java库、输出/错误日志)统一写入自定义日志组,需补充以下配置:
1. 添加标准输出/错误重定向参数
在作业参数中新增两个参数,将stdout和stderr直接定向到自定义日志组:
--redirect-stderr-to-cloudwatch-log-group=custom_log_group--redirect-stdout-to-cloudwatch-log-group=custom_log_group
2. 配置Spark日志属性捕获Java库日志
Java库日志默认通过stderr输出,需强制将其纳入Glue持续日志流:
在作业参数中添加Spark配置:
--conf=spark.driver.extraJavaOptions=-Dlog4j.configuration=file:///tmp/log4j.properties- 同时在作业脚本或依赖包中添加自定义
log4j.properties文件,示例内容如下:
log4j.rootLogger=INFO, glueContext log4j.appender.glueContext=com.amazonaws.services.glue.log.GlueContextLogAppender log4j.appender.glueContext.layout=org.apache.log4j.PatternLayout log4j.appender.glueContext.layout.ConversionPattern=%d{ISO8601} %p %c: %m%n # 针对你的Java库配置日志输出,替换为实际包名 log4j.logger.com.your-java-lib-package=INFO, glueContext log4j.additivity.com.your-java-lib-package=false
3. 控制台日志关联设置确认
在Glue作业配置页面的「Logging」模块,确保:
- 「Continuous logging」处于启用状态
- 「Log group name」指定为
custom_log_group - 「Log stream prefix」设为
test - 勾选「Redirect standard output to CloudWatch」和「Redirect standard error to CloudWatch」,并关联到
custom_log_group
4. 检查IAM执行角色权限
确保Glue作业的执行角色拥有以下CloudWatch Logs权限:
logs:CreateLogGrouplogs:CreateLogStreamlogs:PutLogEventslogs:DescribeLogStreamslogs:DescribeLogGroups
权限不足会导致日志无法写入自定义组,进而 fallback 到默认日志组。
验证
重新运行作业后,检查:
- CloudWatch的
custom_log_group是否包含所有类型的日志 - Glue作业页面的「All Logs」「Output Logs」「Error Logs」链接是否均指向
custom_log_group
内容的提问来源于stack exchange,提问作者Niddhi Garg
相关产品推荐
相关产品推荐

