登录Django
我正试图弄清楚Django中的日志记录(这也是第一次检查Python日志记录本身) 我的settings.py中有以下内容登录Django,django,Django,我正试图弄清楚Django中的日志记录(这也是第一次检查Python日志记录本身) 我的settings.py中有以下内容 LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'handlers': { 'file': { 'level': 'DEBUG', 'class': 'logging.FileHandler',
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”日志消息就不再出现了。只有在我重新启动服务器后,它才这样做。你能告诉我为什么吗?