我使用import logging
模块在AWS lambda中使用python 3.7运行时进行日志记录。
在将日志语句刷新到标准输出之前,我希望对它们执行某些操作,例如,将消息包装为json并添加跟踪数据,以便Kibana解析器能够解析它们
我不想为此编写自己的装饰器,因为这对底层依赖项不起作用
理想情况下,它应该类似于记录器的配置回调 这样它就可以为我做以下工作:
log_statement = {}
log_statement['message'] = 'this is the message'
log_statement['X-B3-TraceId'] = "76b85f5e32ce7b46"
log_statement['level'] = 'INFO'
sys.stdout.write(json.dumps(log_statement) + '\n')
仍然有logger.info('this is the message')
我该怎么做
回答我自己的问题:
LoggerAdapter
,这非常适合预处理日志语句:见:https://docs.python.org/3/howto/logging-cookbook.html#using-loggeradapters-to-impart-contextual-information
注意:我必须将格式设置为
message
,因为我需要将整个语句作为JSON字符串。不幸的是,因此我丢失了一些预定义的日志语句部分,例如aws_request_id
。这是LoggerAdapter#process
的限制,因为它只处理message
部分。如果有人在这里有更好的方法,请建议见:https://gist.github.com/niranjv/fb95e716151642e8ca553b0e38dd152e
相关问题 更多 >
编程相关推荐