为什么Django日志记录不能与Gunicorn一起使用?

时间:2019-03-01 12:03:20

标签: python django gunicorn

我有一个Django网站,位于gunicorn服务器后面。 这是django的日志记录设置-

logging:
  file: logs/test.txt
  pattern:
    file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
  level:
    es:
      test:
        hos:
          testsecond:
            rest:
              resources: info
              exceptions: error

这是启动gunicorn服务器的命令-

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 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 启动django网站时,django设置中的日志记录工作是可以预期的。

但是当我使用gunicorn命令启动相同的东西时,日志格式和来自django的调试日志都消失了。我不确定这里有什么问题,因为manage.py runserver也设置为false。而且我不知道gunicorn中是否有任何设置会影响Django的日志记录功能。

唯一的区别是,当我使用gunicorn运行时,Debug设置为False。

1 个答案:

答案 0 :(得分:0)

在我的views.py中,我遇到了同样的问题

import logging
logger = logging.getLogger("logger_name")

我打印了logger .__ dict__,结果表明logger的Disabled = True 因此,在进行任何信息/调试/错误等操作之前,我将其更改为False。

logger.disabled = False

然后它就像一个魅力