2017-07-13 48 views
1

我在Python Flask應用程序前面使用Gunicorn。當我運行gunicorn時,我可以使用--access-log-format命令行參數配置訪問日誌格式。但我無法弄清楚如何配置錯誤日誌。如何配置gunicorn以使用一致的錯誤日誌格式?

我會很好的默認格式,除非它不一致。它看起來像Gunicorn狀態消息有一種格式,但應用程序例外具有不同的格式。這使得難以使用日誌聚合。

例如,這裏有幾條來自Gunicorn的錯誤日誌的消息。前幾行具有與異常行不同的格式。日期時間格式不同。

[2017-07-13 16:33:24 +0000] [15] [INFO] Booting worker with pid: 15 
[2017-07-13 16:33:24 +0000] [16] [INFO] Booting worker with pid: 16 
[2017-07-13 16:33:24 +0000] [17] [INFO] Booting worker with pid: 17 
[2017-07-13 16:33:24 +0000] [18] [INFO] Booting worker with pid: 18 
[2017-07-13 18:31:11,580] ERROR in app: Exception on /api/users [POST] 
Traceback (most recent call last): 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1982, in wsgi_app 
    response = self.full_dispatch_request() 
    File "/usr/local/lib/python3.5/dist-packages/flask/app.py", line 1614, in full_dispatch_request 
    rv = self.handle_user_exception(e) 
... 

配置Gunicorn爲其錯誤日誌使用一致格式的最佳方式是什麼?

回答

0

使用此日誌配置文件,我可以更改錯誤日誌格式

[loggers] 
keys=root, gunicorn.error 

[handlers] 
keys=error_console 

[formatters] 
keys=generic 

[logger_root] 
level=INFO 
handlers=error_console 

[logger_gunicorn.error] 
level=INFO 
handlers=error_console 
propagate=0 
qualname=gunicorn.error 

[handler_error_console] 
class=StreamHandler 
formatter=generic 
args=(sys.stderr,) 

[formatter_generic] 
format=%(asctime)s %(levelname)-5s [%(module)s] ~ %(message)s 
datefmt=%Y-%m-%d %H:%M:%S %Z 
class=logging.Formatter 

關鍵是要覆蓋gunicorn.error記錄器的配置,和上面剪斷正是這麼做的。

注意propagate=0字段,否則重要的是您的日誌消息將被打印兩次(gunicorn始終保持默認的日誌配置)。

相關問題