[英]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.