【发布时间】:2018-07-27 22:40:46
【问题描述】:
我在我的 Django 应用程序中设置了日志记录以记录到标准输出和文件。
当我正常运行我的 django 应用程序 (./manage.py runserver) 时,日志会按预期更新。这是一个在我访问以下视图的 url 时成功记录的示例:
# views.py
import logging
logger = logging.getLogger('mylogger')
def test(request):
logger.error("test")
但是,当我运行 ./manage.py shell 并运行以下命令时,日志不会更新:
import logging
logger = logging.getLogger('mylogger')
logger.error('test')
这是我在 settings.py 中的日志设置:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'filters': {
},
'handlers': {
'console': {
'level': 'INFO',
'class': 'logging.StreamHandler',
'stream': sys.stdout,
},
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': '../debug.log',
},
},
'loggers': {
'mylogger': {
'handlers': ['console', 'file'],
'level': 'INFO',
'propagate': True,
},
}
}
我是否必须做一些额外的事情才能让日志记录在 shell 中工作?
【问题讨论】:
-
编辑您的问题,向我们展示在您使用
runserver时有效的日志记录代码,以及settings.py中的日志记录设置。 -
@JohnGordon 我更新了我的问题。您的评论似乎暗示如果它在 runserver 中工作,日志记录应该在 shell 中工作,因为您试图查看我在哪里错误配置了我的设置。你能确认日志记录应该在 shell 中工作吗?
-
@BUZZY 这不是那个问题的重复。我成功登录到控制台。如果您阅读该问题和我的问题,您会看到我正在正确配置
'loggers'字典,并使用与我正在调用的名称匹配的记录器 -
@rawbeans 尝试在 sys.stderr 上更改控制台的处理程序流