我正在尝试设置Django日志记录以记录弃用警告。我通常不会有像这样的格式化程序或输出到控制台,这只是测试并显示它不起作用。
这是我的代码:
def is_deprecated(record):
if record.exc_info:
exc_type, exc_value = record.exc_info[:2]
print(exc_value)
if isinstance(exc_value, DeprecationWarning) or isinstance(exc_value, PendingDeprecationWarning):
return True
return False
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'stuff': {
'format': 'This works!'
}
},
'filters': {
'is_deprecated': {
'()': 'django.utils.log.CallbackFilter',
'callback': is_deprecated,
},
},
'handlers': {
'console': {
'filters': ['is_deprecated'],
'class': 'logging.StreamHandler',
'formatter': 'stuff',
},
},
'loggers': {
'django': {
'handlers': ['console'],
'level': 'INFO',
},
},
}
应该输出“这个有效!”当它达到弃用警告时,它不会。我在
上运行带有这些警报的pythonpython -Wd
所以我可以看到常规的Django警报,但我无法让记录器检测它们。
答案 0 :(得分:0)
显然,你使用它显示警告的-Wd
参数但不被视为异常(Django日志只处理异常)你可以在某些初始部分使用warnings.simplefilter('error')
来改变这种行为(比如settings.py, init .py,manage.py等)或使用python -W error
命令
参考:https://docs.python.org/2/library/warnings.html#the-warnings-filter