0

我在我的 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
4

2 回答 2

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,...]
于 2019-08-13T17:04:06.383 回答
0

目前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经过精心设计以使此类定制变得容易。

于 2019-08-09T06:23:50.247 回答