登录Django

登录Django,django,Django,我正试图弄清楚Django中的日志记录(这也是第一次检查Python日志记录本身) 我的settings.py中有以下内容 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler',

我正试图弄清楚Django中的日志记录(这也是第一次检查Python日志记录本身)

我的settings.py中有以下内容

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': '/home/afzalsh/logs/debug.log',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['file'],
            'level': 'DEBUG',
            'propagate': True,
        },
    },
}
这正是Django文档中作为第一个示例的代码

然后在基于类的视图中有一条日志消息

import logging
.
.
.
class StationHome(View):
    .
    .
    .
    def post(self,request, pk):
        station = Station.objects.get(pk=pk)
        form = StationForm(request.POST, instance=station)
        if form.is_valid():
            logger = logging.getLogger(__name__)
            logger.error("Yep!")
            form.save()
            return HttpResponseRedirect(reverse("home_station",
                                                kwargs={'pk':pk},
                                            )
                                    )
        else:
            return HttpResponse("Form Invalid")
.
.
.

debug.log文件已创建,但在执行特定代码时,不会填充任何消息。预期的过程确实会发生。

在您的设置中,处理程序dict包含文件的“调试”级别,而在您的代码中,您使用的是“错误”级别来记录

logger.error("Yep!")
尝试在代码中使用“调试”级别。大概是这样的:

logger.debug("Yep!")
还将我的设置张贴在此处,以便您可以将其用作参考

{
'version': 1,
'disable_existing_loggers': True,
'formatters': {
    'standard' : {
        'format' : "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s",
        'datefmt' : "%d/%b/%Y %H:%M:%S"
        },
    },
'handlers': {

    'console':{
        'level': 'DEBUG',
        'class': 'logging.StreamHandler'
    },
    'null' : {
        'level':'DEBUG',
        'class':'django.utils.log.NullHandler',
        },
    'file' : {
        'level': 'DEBUG',
        'class': 'logging.FileHandler',
        'filename': 'debug.log',
        },
    'mail_admins': {
        'level': 'ERROR',
        'class': 'django.utils.log.AdminEmailHandler'
    }
},
'loggers': {
    'django.request': {
        'handlers': ['mail_admins'],
        'level': 'ERROR',
        'propagate': True,
    },
    'django': {
        'handlers': ['file'],
        'propogate': True,
        'level': 'DEBUG',
        },
    'matchroom_app':{
        'handlers' : ['file'],
        'level': 'DEBUG',
        },
    'matchroom_post':{
        'handlers' : ['file'],
        'level' : 'DEBUG',
        },
    'matchroom_social':{
        'handlers': ['file'],
        'level' : 'DEBUG',
        },
}

}

您已经请求了与
\uuuuu name\uuuuu
关联的记录器,因此您得到了一个与当前Python模块同名的记录器。但是,您实际配置的唯一一个是“django.request”。您应该在调用
getLogger
时使用它。

不是这样的:调试是最低级别的,所以所有内容都会被记录下来。哦。对由于调试是最低级别,所以应该记录所有内容。我想你得到了正确的答案。不管怎样,我希望我的设置能有所帮助。谢谢。就这样。你能告诉我这个吗;最初,我传递的是
django.request
,而不是
'django.request'
,因此我的日志文件最终被相应的错误消息填充。我只是选择并删除了全文。然后“Yep”日志消息就不再出现了。只有在我重新启动服务器后,它才这样做。你能告诉我为什么吗?