2017-05-08 27 views
0

有沒有人用Django使用?我正在尋找一個代碼示例,我如何集成Django日誌記錄(通過標準庫完成)和structlog。用Django配置和使用structlog

我試着從"Rendering Using structlog-based Formatters Within logging"例子的代碼,只有輕微的修改:

# From my settings.py, basically the same code as in the linked example 

timestamper = structlog.processors.TimeStamper(fmt="%Y-%m-%d %H:%M:%S") 
pre_chain = [ 
    structlog.stdlib.add_log_level, 
    timestamper, 
] 
LOGGING = { 
    "version": 1, 
    "disable_existing_loggers": False, 
    "formatters": { ... }, # Exactly like in the linked example 
    "handlers": { ... }, # Ditto, but only "default" handler (no files) 
    "loggers": { 
     "django": { 
      "handlers": ["default"], 
      "level": "INFO", 
     }, 
     # I also had "" logger here, with the same config as "django", 
     # but it's irrelevant for the example purposes. 
    } 
} 
# Same as in the example 
structlog.configure(
    processors=[ 
     structlog.stdlib.add_log_level, 
     structlog.stdlib.PositionalArgumentsFormatter(), 
     timestamper, 
     structlog.processors.StackInfoRenderer(), 
     structlog.processors.format_exc_info, 
     structlog.stdlib.ProcessorFormatter.wrap_for_formatter, 
    ], 
    context_class=dict, 
    logger_factory=structlog.stdlib.LoggerFactory(), 
    wrapper_class=structlog.stdlib.BoundLogger, 
    cache_logger_on_first_use=True, 
) 

不過,我結束了記錄錯誤。這是對與404

TypeError: not all arguments converted during string formatting 
... 
    File "/usr/local/lib/python3.6/site-packages/django/core/handlers/base.py", line 152, in get_response 
    extra={'status_code': 404, 'request': request}, 
Message: '\x1b[2m2017-05-08 18:34:53\x1b[0m [\x1b[33m\x1b[1mwarning \x1b[0m] \x1b[1mNot Found: /favicon.ico\x1b[0m' 
Arguments: ('/favicon.ico',) 

我一直試圖弄清楚究竟是什麼的推移,但在調試器中迷了路結束了簡單的GET請求會發生什麼的摘錄。

當然,我可以使用structlog僅用於應用程序日誌記錄,並保持標準庫日誌記錄器的狀態。但是,我希望統一所有日誌記錄,因此我的應用程序的輸出將是統一的,可以解析。

我非常感謝代碼片斷,它顯示瞭如何正確地將structlog與Django集成在一起。

回答

2

很可能這個bug將在structlog 17.2中得到修復,應該很快發佈:https://github.com/hynek/structlog/pull/117(隨意發表評論或嘗試它是否可以解決您的問題)。

+0

對不起,有點遲了回覆。剛剛檢出17.2,並可以確認它很好地解決了這個問題。所有的日誌記錄工作正如我所期望的那樣。非常感謝你的幫助,並且爲了製作這個非常棒的圖書館! – drdaeman