如何在 Python 结构日志中的每个日志中添加时间戳和日志级别?



如何配置structlog,以便它自动添加logleveltimestamp(可能还有其他字段)默认情况下,它记录的每个日志消息?因此,我不必显式地将它添加到每条消息中。

我显示我的消息作为JSON(与Fluentd, Elasticsearch和Kibana进一步处理)。loglevel没有(出于某种原因)包含在输出JSON日志中。

这就是我如何配置我的structlog

structlog.configure(
processors=[structlog.processors.JSONRenderer()],
wrapper_class=structlog.make_filtering_bound_logger(logging.INFO),
)

I am logging:

log.info("Artist saved", spotify_id=id)

我看到的日志(注意没有timeloglevel):

{"logger": "get_artists.py", "spotify_id": "4Y6z2aIww27vnxZz9xfG3S",  "event": "Artist saved"}

我在这里找到了答案:Python在日志记录中为基于structlog的格式化程序添加了额外的字段

有一些处理器正在做我需要的事情:

structlog.configure(
processors=[
structlog.processors.add_log_level,
structlog.processors.TimeStamper(fmt="iso", key="ts"),
structlog.processors.JSONRenderer(),
],
wrapper_class=structlog.make_filtering_bound_logger(logging.INFO),
)

同时添加add_log_levelTimeStamper,结果与日志..., "level": "info", "ts": "2022-04-17T19:21:56.426093Z"}中的额外字段一样。

最新更新