繁体   English   中英

Python structlog中是否有一种方法可以将密钥从'logger'更改为'namespace'?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM