簡體   English   中英

如何在 Python 的 structlog 中為每條日志添加時間戳和日志級別?

[英]How to add a timestamp and loglevel to each log in Python's structlog?

如何配置structlog以便它在默認情況下自動將日志logleveltimestamp (可能還有其他字段)添加到它記錄的每條日志消息中? 所以我不必將它明確地添加到每條消息中。

我將我的消息顯示為 JSON(用於進一步處理 Fluentd、Elasticsearch 和 Kibana)。 loglevel沒有(出於某種原因)包含在 output JSON 日志中。

這就是我確認structlog的方式。

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

我正在記錄:

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

我看到的日志(不要介意time和日志loglevel ):

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

我在這里找到了答案: Python add extra fields to structlog-based formatters within logging

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

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"}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM