如何配置structlog
,以便它自动添加loglevel
和timestamp
(可能还有其他字段)默认情况下,它记录的每个日志消息?因此,我不必显式地将它添加到每条消息中。
我显示我的消息作为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)
我看到的日志(注意没有time
和loglevel
):
{"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_level
和TimeStamper
,结果与日志..., "level": "info", "ts": "2022-04-17T19:21:56.426093Z"}
中的额外字段一样。