2017-02-08 84 views
2

我有這樣的日誌記錄配置設置:如何在gunicorn服務器下爲生產配置django日誌記錄?

LOGGING = { 
    'version': 1, 
    'disable_existing_loggers': False, 
    'filters': { 
     'require_debug_false': { 
      '()': 'django.utils.log.RequireDebugFalse' 
     } 
    }, 
    'formatters': { 
     'verbose': { 
      'format': '%(asctime)s %(levelname)s [%(name)s:%(lineno)s] %(module)s %(process)d %(thread)d %(message)s' 
     } 
    }, 
    'handlers': { 
     'console': { 
      'level': 'INFO', 
      'class': 'logging.StreamHandler', 
      'stream': sys.stdout, 
      'formatter': 'verbose' 
     } 
    }, 
    'loggers': { 
     'gunicorn.errors': { 
      'level': 'INFO', 
      'handlers': ['console'], 
      'propagate': True, 
     }, 
    } 
} 

它似乎沒有任何效果可言。當標誌DEBUG設置爲True時,我可以在控制檯中看到一些錯誤。但是,如果它設置爲False,我不能。那麼如何將錯誤記錄到控制檯,儘管DEBUG標誌被設置爲一種方式或另一種方式?

+0

你用的是什麼django版本? – HassenPy

+0

Django版本是1.10 –

回答

2

在Django 1.9default logging configuration has been changed

更改默認日誌configuration¶

爲了更容易編寫自定義日誌記錄配置,Django的 默認的日誌配置不再定義「django.request」和 'django.security'記錄器。相反,它定義了一個單獨的'django'記錄器,使用兩個處理程序在INFO級別進行篩選:

'console':在INFO級別進行篩選,並且只有在DEBUG = True時才處於活動狀態。 'mail_admins':在ERROR級別過濾,僅在 DEBUG = False時纔有效。例如,如果您不覆蓋Django的默認日誌記錄,則您應該看到行爲的最小更改,但您可能會看到一些新的 日誌記錄到runserver控制檯。

如果您重寫Django的默認日誌記錄,則應該檢查 瞭解您的配置如何與新默認值合併。

所以,你需要做的僅僅是覆蓋默認配置是什麼,它添加到您的loggers

'django':{ 
    'level': 'INFO', 
    'handlers': ['console'], 
    'propagate': True, 
} 

登錄到控制檯不會現在就要靠DEBUG

希望這會有所幫助!

+1

是的,它幫助。謝謝! –

+0

我想你也可以刪除'gunicorn.error'和'disable_existing_loggers',除非你有額外的配置需要它們 – HassenPy

+0

我實際上用你提供的內容替換了gunicorn.error,因爲它沒有做任何事情。 –