Pythonlogging.getLogger 在 AWS Glue python shell 作业中不起作用

标签 python amazon-web-services logging aws-glue

我正在尝试使用 Python 的 logging 模块为我的 AWS Glue 作业设置记录器。我有一个使用 Python 版本 3 的类型为“Python Shell”的 Glue 作业。

如果我在没有任何名称的情况下实例化记录器,那么日志记录工作正常,但是如果我给我的记录器一个名称,它就不再工作,并且我收到一条错误消息: 未找到日志流

我在示例胶水作业中有以下代码:

import sys
import logging

# Version 1 - this works fine
logger = logging.getLogger()
log_format = "[%(asctime)s %(levelname)-8s %(message)s"

# Version 2 - this fails
logger = logging.getLogger(name = "foobar")
log_format = "[%(name)s] %(asctime)s %(levelname)-8s %(message)s"

date_format = "%a, %d %b %Y %H:%M:%S %Z"
log_stream = sys.stdout
if logger.handlers:
  for handler in logger.handlers:
    logger.removeHandler(handler)
logging.basicConfig(level = logging.INFO, format = log_format, stream =
    log_stream, datefmt = date_format)
logger.info("This is a test.")

请注意,我正在删除基于 this 的处理程序发布。

如果我使用代码版本 1 实例化记录器,它会成功运行,并且我能够查看日志,并在 CloudWatch 中查询日志。

如果我运行版本 2,并为记录器指定名称,Glue 作业仍然会成功。但是,如果我尝试查看日志,则会收到以下错误消息:

Log stream not found
The log stream jr_f137743545d3d242618ac95d859b9146fd15d15a0aadce64d8f3ba991ffed012 could not be found. Check if it was correctly created and retry.

而且我也无法在 CloudWatch 中查询这些日志。

我尝试使用 python 版本 3.6.0 在本地运行此代码,两个版本都可以工作。此外,此日志记录代码的两个版本都在 Lambda 函数内部工作。他们只在 Glue 中失败。

最佳答案

这段代码对我有用:

import logging
import sys

root = logging.getLogger()
root.setLevel(logging.DEBUG)

handler = logging.StreamHandler(sys.stdout)
handler.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
root.addHandler(handler)
root.info("check")

关于Pythonlogging.getLogger 在 AWS Glue python shell 作业中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59904637/

相关文章:

python - 亚马逊 Lambda inbound-ses-spam-filter (python)

amazon-web-services - AWS Elasticsearch:如何将位置{lat:float,lon:float}的映射类型更改为geo_point

logging - 将日志记录(到数据库)添加到服务堆栈服务

python - 如何将 matplotlib 图导出为带有可编辑文本字段的矢量图形?

java - 在 Google 的 Protocol Buffers 中,什么是适合异常的协议(protocol)文件/模型?

为 XMLReader 安装 php-xml 时,php54 与 php53 常见冲突

logging - NGINX 错误日志格式文档

c - 如何使用 rsyslogd 登录到/var/log/mail.log?

python - 通过正确使用 ManyToMany 来处理 django 中的复杂模型

amazon-web-services - 无服务器框架 : Adding dependencies for AWS resources