【发布时间】:2020-07-05 19:46:15
【问题描述】:
我遇到了 Django Loggers 的奇怪行为。
我正在使用 Django 开发前端应用程序。在登录服务期间,我向某些组件发出一些请求,并使用 log.warning() 调用来查看请求的流程。
日志运行良好,直到我决定添加一个 LOGGING 配置以在文件中打印日志的输出,因为我想通过 Docker 部署应用程序并且我想定期检查日志文件。
当我添加以下有关日志记录的 Django 配置时:
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'formatters': {
'detailed': {
'class': 'logging.Formatter',
'format': "[%(asctime)s] - [%(name)s:%(lineno)s] - [%(levelname)s] %(message)s",
}
},
'handlers': {
'console': {
'class': 'logging.StreamHandler',
'level': 'INFO',
'formatter': 'detailed',
},
'file': {
'class': 'logging.handlers.RotatingFileHandler',
'filename': "{}/am.log".format(BASE_DIR),
'mode': 'w',
'formatter': 'detailed',
'level': 'INFO',
'maxBytes': 2024 * 2024,
'backupCount': 5,
},
},
'loggers': {
'am': {
'level': 'INFO',
'handlers': ['console', 'file']
},
}
}
日志记录停止工作。日志配置中指定的文件 am.log 确实已创建,但没有任何内容打印到该文件。甚至控制台日志记录也不会发生。
我已经从我的一个 Django 项目中为这个应用程序的后端获取了这个日志记录配置,它在那里完美运行。我真的不明白我做错了什么。您能否帮助我或指导我正确的方向。我会很感激。
祝大家有个美好的一天!
【问题讨论】:
-
“am”是您应用的名称吗?每个记录器的键应该是生成记录的模块的名称(假设您使用
logger = logging.getLogger('__name__')获取记录器),否则它应该是记录器的名称,即logger = logging.getLogger('am')。如果您想要所有内容,请使用根记录器,即密钥应该是空字符串 ('')。
标签: django logging django-rest-framework