[英]Is there a way in Python structlog to change the key from 'logger' to ''namespace"?
我在我的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
当前 , 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
目的是使这种自定义变得容易。
感谢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,...]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.