我有一个 django 站点,它位于 gunicorn 服务器后面。
以下是 django 的日志记录设置 -
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'formatters': {
'verbose': {
'format': '[%(asctime)s][%(levelname)s] %(message)s',
},
},
'handlers': {
'file': {
'level': os.environ['DJANGO_LOGLEVEL'],
'class': 'logging.FileHandler',
'filename': '/mnt/storage/logs/django.log',
'formatter': 'verbose',
},
},
'loggers': {
'django': {
'handlers': ['file'],
'level': os.environ['DJANGO_LOGLEVEL'],
'propagate': True,
},
},
}
这是启动 gunicorn 服务器的命令 -
gunicorn training_service.wsgi -b 0.0.0.0:8000 -w 4 --access-logfile /mnt/storage/logs/access.log --log-file /mnt/storage/logs/gunicorn.log --log-level $GUNICORN_LOGLEVEL
现在,我的理解是,两个日志框架都应该完全独立地工作。
但是当我通过调用
manage.py runserver
启动 django 站点时django 设置预计会进行日志记录工作。但是当我使用 gunicorn 命令启动同样的事情时,日志格式和来自 django 的调试日志都消失了。我不确定这里出了什么问题,因为
disable_existing_loggers
也设置为false。而且我不知道 gunicorn 中是否有任何设置会影响 django 的日志记录功能。唯一的区别是当我使用 gunicorn 运行时,Debug 设置为 False。
最佳答案
我有同样的问题,在我的 views.py 中,我有以下行
import logging
logger = logging.getLogger("logger_name")
我打印了logger.__dict__,结果发现logger有Disabled=True
因此,在执行任何信息/调试/错误等之前,我将其更改为 False。
logger.disabled = False
然后它就像一个魅力
关于python - 为什么 Django 日志不能与 Gunicorn 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54944287/