AWS Glue Python 中缺少日志

HouKaide

我继承了我正在尝试登录 Glue 的 python 脚本。最初它有打印,但仅在作业完成后才发送,但无法在运行时查看执行状态。

我已将日志系统更改为 cloudwatch 系统,但显然它不会像 Spark 系统那样以流式传输方式发送日志,根据this

我决定遵循他们的建议并为此目的使用了望塔,我有这样的代码:

def initialize_log() -> logging.Logger:
    logger = logging.getLogger(__name__)
    log_format = "[%(name)s] %(asctime)s %(levelname)-8s %(message)s"

    date_format = "%a, %d %b %Y %H:%M:%S %Z"
    log_stream = sys.stdout

    logging.basicConfig(level=logging.INFO, format=log_format, stream=log_stream, datefmt=date_format)
    logger.addHandler(watchtower.CloudWatchLogHandler(log_group='/aws-glue/python-job', stream_name='my_stream_name'))
    return logger

def log(logger, message):
    logger.info(message)
    logger.info(dict(foo="bar", details={}))

但是,当我这样做时:

logger = initialize_log()

log(logger, "Message")

/aws-glue/python-job我在 Cloudwatch或任何目录中的消息中都找不到这个。

我想问你是否知道我可能做错了什么。

先感谢您

HouKaide

使用日志库解决:

import logging

def initialize_log() -> logging.Logger:
    logger = logging.getLogger()
    logger.setLevel(logging.INFO)

    handler = logging.StreamHandler(sys.stdout)
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    handler.setFormatter(formatter)
    logger.addHandler(handler)
    return logger


def log(message: str):
    logger.info(message)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章