我在Python项目中使用structlog-http://www.structlog.org/en/stable/。如果配置中的处理器是
,我就有一个stdlib.add_logger_name
这会将event_dict中的密钥添加为logger
。但是,我想将密钥字符串更改为类似namespace
而不是logger
的形式。我该怎么办?
我已经检查了
的功能stdlib.add_logger_name(logger, method_name, event_dict)
但该函数使用硬编码字符串logger
作为
event_dict["logger"] = logger.name
答案 0 :(得分:0)
Currently,structlog.stdlib.add_logger_name()
是6个LoC,您很可能只需要两个:
def add_logger_name(logger, method_name, event_dict):
"""
Add the logger name to the event dict.
"""
record = event_dict.get("_record")
if record is None:
event_dict["logger"] = logger.name
else:
event_dict["logger"] = record.name
return event_dict
只需复制并粘贴并使其适应您的需求即可。
向处理器添加选项并降低每个人的速度是不值得的,因为直到今天才出现,但是structlog
的目的是使这种自定义变得容易。 >
答案 1 :(得分:0)
感谢hynek的回答。 我通过添加一个本地函数解决了这个问题:
def add_logger_name(logger, method_name, event_dict):
"""
Add the logger name to the event dict with namespace as the key as per logging convention
"""
record = event_dict.get("_record")
if record is None:
event_dict["namespace"] = logger.name
else:
event_dict["namespace"] = record.name
return event_dict
在
中进行设置processors=[add_logger_name,...]