Gunicorn使用docker-compose阻止django应用程序的日志记录

时间:2018-04-09 17:44:14

标签: django docker-compose gunicorn

我的django应用程序有一个非常简单的日志记录设置

DEBUG = True
LOGGING_DIR = os.path.join(BASE_DIR, 'logs')
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
        'simple': {
            'format': '%(levelname)s %(message)s'
        },
    },
    'handlers': {
        'console': {
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        },
        'file': {
            'level': 'DEBUG',
            'class': 'logging.FileHandler',
            'filename': os.path.join(LOGGING_DIR, 'django2.log'),
            'formatter': 'verbose'
        },
        'SysLog': {
                'level': 'DEBUG',
                'class': 'logging.handlers.SysLogHandler',
                'formatter': 'verbose',
                'address': ('logsXX.papertrailapp.com', XXXXX)
            },

    },
    'loggers': {
        '': {
            'handlers': ['console', 'file', 'SysLog'],
            'propagate': True,
            'level': 'DEBUG',

        },
        'django.server': {
            'handlers': ['console', 'file', 'SysLog'],
            'propagate': True,
            'level': 'DEBUG',

        },
        'django.template': {
            'handlers': ['console', 'file', 'SysLog'],
            'propagate': True,
            'level': 'DEBUG',
        },
    },
}

当我运行python3 manage.py runserver --settings=my_app.local时,我可以在我的文件中看到日志记录在控制台中工作并被推送到papertrail。

但是,当我使用docker-compose来运行应用程序时,我只看到输出到控制台以显示明确记录的错误,例如logger.info('some_error')但不是请求,没有任何内容正在写入我拥有的文件没有任何东西被发送到papertrail。

我的docker撰写文件如下所示:

# docker-compose.test.yaml
version: '3'
services:
  webapp:
    image: local-build:latest
    command: ["gunicorn", "my_app.wsgi", "-b", "0.0.0.0:8000", '-t', '500']
    env_file: [env.txt]
    environment:
      DJANGO_SETTINGS_MODULE: my_app.local
    ports:
     - "8000:8000"

我看过这篇帖子,其中有人似乎有类似的问题:How to use Django logging with gunicorndisable_existing_loggers已设置为False

1 个答案:

答案 0 :(得分:1)

我找到了答案,我不得不将记录器更改为gunicorn,现在效果很好。