[英]Django logging hiding errors
如何使logging.error(msg)在Django應用中顯示錯誤消息?
通常建議使用Python的日志記錄模塊來處理Django中的日志記錄輸出,但是我發現它非常麻煩和復雜,並且很容易完全禁用所有輸出。
在我的Django設置中,我具有以下日志記錄設置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'mail_admins': {
'level': 'ERROR',
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
}
在管理命令中,我將記錄器稱為:
import logging
LOG = logging.getLogger(__name__)
LOG.error('some error happened!')
但是即使在啟用DEBUG的本地開發服務器中,我也從未在控制台中看到這些錯誤。 我究竟做錯了什么?
您可能看不到日志記錄輸出,因為您沒有為腳本中的__name__
安裝記錄器。
解釋:
'loggers': {
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True,
},
}
告訴日志記錄框架安裝名稱為'django.request'
的單個記錄器。 因此,只有記錄到'django.request'
消息才會產生任何輸出,即,如果在您的示例代碼中__name__
不是'django.request'
,那么您將不會獲得任何輸出。
您可能想要的是root記錄器 :
'': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': True, # this tells logger to send logging message
# to its parent (will send if set to True)
}
可以為其他(django和非django)模塊安裝其他記錄器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.