gpt4 book ai didi

Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段

转载 作者:行者123 更新时间:2023-12-05 05:01:57 30 4
gpt4 key购买 nike

我正在尝试将日志的额外字段添加为键值,同时继续使用标准日志记录库和 structlog ProcessorFormatter。

这是一个例子:

如果我们使用 JsonFormatter,额外的字段将作为键值添加到日志中。

使用 python-json-logger:

formatter = jsonlogger.JsonFormatter()
handler = logging.StreamHandler()
handler.setFormatter(formatter)

logging.basicConfig(
level=logging.DEBUG,
handlers=[handler]
)

logger = logging.getLogger('testnameloger1')
logger.debug('testmsg2', extra={'extra2': 2})

控制台:

{"message": "testmsg2", "extra2": 2}

在日志记录中使用基于 structlog 的格式化程序进行渲染:

shared_processors = [
structlog.stdlib.add_logger_name,
structlog.stdlib.add_log_level,
structlog.processors.TimeStamper(fmt='iso'),
]

formatter = structlog.stdlib.ProcessorFormatter(
processor=structlog.processors.JSONRenderer(),
foreign_pre_chain=shared_processors,
)
handler = logging.StreamHandler()
handler.setFormatter(formatter)

logging.basicConfig(
level=logging.DEBUG,
handlers=[handler]
)

logger = logging.getLogger('testnameloger1')
logger.debug('testmsg1', extra={'extra1': 1})

控制台:

{"event": "testmsg1", "logger": "testnameloger1", "level": "debug", "timestamp": "2020-06-16T13:33:50.881221Z"}

如何在日志输出中添加额外的字段?

我想要的日志格式如下:

{"event": "testmsg1", "extra1": 1, "logger": "testnameloger1", "level": "debug", "timestamp": "2020-06-16T13:33:50.881221Z"}

感谢您的指点

最佳答案

这从 structlog 21.5.0 开始有效!

查看 structlog.stdlib.ExtraAdder允许您选择要添加的内容的处理器(添加所有内容,就像 ExtraAdder() 一样)。

关于Python 在日志记录中向基于 structlog 的格式化程序添加额外的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62409907/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com