我是登录的新手。我在views.py
文件中添加了用于登录的代码,并且在settings.py
文件中根据django文档添加了设置。但是,logging.txt文件在DEBUG
级别显示其他异常,或者在WARNING
级别显示无输出。该网站正常运行,我可以在EC2实例上运行它。
这是我的 views.py 文件中的代码:
import logging
# Get an instance of a logger
logger = logging.getLogger(__name__)
def index(request):
...
logger.error("THIS IS A LOG ERROR!!!")
logger.warning("THIS IS A LOG WARNING!!!")
...
return render(...)
这是我的 settings.py 文件中的代码:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logging.txt',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
},
}
我在做什么错了?
答案 0 :(得分:1)
您配置的记录器名为django
,它将与顶级django
包下的所有代码相匹配-本质上是Django框架代码。
对于您自己的代码,您需要根据应用名称配置一个单独的记录器,该记录器将应用于在该应用内部任何模块中使用logging.getLogger(__name__)
创建的记录器。例如,如果您的应用名为myapp
:
'myapp': { # Will apply to myapp/views.py, myapp/models.py etc.
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
}
此外,最好配置一个根记录器,该记录器充当“追赶者”,以记录与显式记录器不匹配的所有消息。您可以将root记录程序设置为ERROR
,以免丢失任何来自系统任何部分的错误。您使用一个空字符串作为根记录器的名称。
'': {
'handlers': ['file'],
'level': 'ERROR',
}
所以在一起:
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'file': {
'level': 'DEBUG',
'class': 'logging.FileHandler',
'filename': 'logging.txt',
},
},
'loggers': {
'django': { # Logger for Django framework code
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'myapp': { # Specific logger for your app
'handlers': ['file'],
'level': 'DEBUG',
'propagate': True,
},
'': { # Catchall root logger
'handlers': ['file'],
'level': 'ERROR',
},
},
}