我在进行Django日志记录时遇到了麻烦。我已经阅读了有关日志记录的Python和Django文档,但仍然看不到我在做什么错。首先,我只是想在执行以下简单视图时将消息记录到运行Django开发服务器的控制台上:
# demo/views.py
import logging
logger = logging.getLogger(__name__)
def demo_logging(request, template):
logger.error("Got some error")
return render(request, template)
Run Code Online (Sandbox Code Playgroud)
我正在使用Django的默认日志记录设置,该设置是在我的设置文件中的django / utils / log.py中指定的,以便(希望)我确切地知道正在发生什么(显然我不知道):
# settings.py
DEBUG = True
...
LOGGING_CONFIG = None
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
'require_debug_false': {
'()': 'django.utils.log.RequireDebugFalse',
},
'require_debug_true': {
'()': 'django.utils.log.RequireDebugTrue',
},
},
'handlers': {
'console': {
'level': 'INFO',
'filters': ['require_debug_true'],
'class': 'logging.StreamHandler',
},
'null': {
'class': 'logging.NullHandler',
},
'mail_admins': {
'level': 'ERROR',
'filters': ['require_debug_false'],
'class': 'django.utils.log.AdminEmailHandler'
}
},
'loggers': {
'django': {
'handlers': ['console'],
},
'django.request': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
'django.security': {
'handlers': ['mail_admins'],
'level': 'ERROR',
'propagate': False,
},
'py.warnings': {
'handlers': ['console'],
},
}
}
import logging.config
logging.config.dictConfig(LOGGING)
Run Code Online (Sandbox Code Playgroud)
执行视图时,控制台中除了显示以下消息外,什么都看不到,
No handlers could be found for logger "demo.views"
Run Code Online (Sandbox Code Playgroud)
我不明白我在做什么错。我认为调用logger.error会命中链接到已定义的控制台处理程序的Django记录器。
谢谢。
后续 我通过添加默认的“全部捕获”记录器解决了这个问题,该记录器在使用“ __name__”参数创建记录器时将被触发:
'loggers': {
'': {
'handlers': ['console'],
},
...
Run Code Online (Sandbox Code Playgroud)
调用logger = logging.getLogger(__name__)使logging模块搜索名为模块的记录器(demo.views);由于您没有用该名称定义的记录器,因此它将失败。要简单地登录到控制台,您可以使用配置键中django定义的记录器:'loggers'LOGGING
import logging
logger = logging.getLogger('django')
def demo_logging(request, template):
logger.error("Got some error")
return render(request, template)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2215 次 |
| 最近记录: |