为什么';这不是Django的日志工作吗?

为什么';这不是Django的日志工作吗?,django,logging,Django,Logging,我在使用Django日志时遇到了问题。我已经阅读了Python和Django关于日志记录的文档,但是我仍然不知道我做错了什么。首先,我只是试图在执行以下简单视图时,将一条消息记录到Django开发服务器正在运行的控制台: # demo/views.py import logging logger = logging.getLogger(__name__) def demo_logging(request, template): logger.error("Got some error"

我在使用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)
我正在使用设置文件中Django/utils/log.py中指定的Django的默认日志设置,以便(希望)准确地知道发生了什么(显然我不知道):

当我执行视图时,除了消息之外,我在控制台中看不到任何东西

No handlers could be found for logger "demo.views"
我不明白我做错了什么。我认为调用logger.error会命中django记录器,该记录器链接到已定义的控制台处理程序

谢谢

跟进 我通过添加一个默认的“catch all”记录器解决了这个问题,该记录器将在使用“\uuuu name\uuuuu”参数创建记录器时触发:

'loggers': {
    '': {
        'handlers': ['console'],
    },
    ...

调用
logger=logging.getLogger(\uuuu name\uuuu)
会导致
logging
模块搜索名为您的模块的记录器(
demo.views
);由于没有使用该名称定义的记录器,因此它将失败。要简单地登录到控制台,您可以使用
日志记录
配置的
'loggers'
键中定义的
django
日志记录程序:

import logging
logger = logging.getLogger('django')

def demo_logging(request, template):
    logger.error("Got some error")
    return render(request, template)

这是真的。然而,我刚刚发现的一个更好的方法可能是添加一个默认记录器,如上图所示。鉴于Django文档示例显示了在指定记录器时使用“\uuuuu name\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。毫无例外。
import logging
logger = logging.getLogger('django')

def demo_logging(request, template):
    logger.error("Got some error")
    return render(request, template)