首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AWS Glue Python中缺少日志

AWS Glue Python中缺少日志
EN

Stack Overflow用户
提问于 2022-06-10 12:14:05
回答 1查看 182关注 0票数 0

我继承了一个python脚本,我正在尝试登录Glue。最初它有打印,但它们只发送一次作业完成,但它是不可能看到执行的状态在运行时。

this称,我已经将日志系统更改为cloudwatch,但显然它并不像Spark那样以流式方式发送日志。

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

代码语言:javascript
复制
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={}))

然而,当我这样做时:

代码语言:javascript
复制
logger = initialize_log()

log(logger, "Message")

我无法在Cloudwatch /aws-glue/python-job或任何目录中找到这条消息。

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

提前谢谢你

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-13 09:20:18

使用日志库解决:

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72574136

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档