繁体   English   中英

Gunicorn使用docker-compose阻止Django应用的日志记录

[英]Gunicorn blocking logging for django app using docker-compose

我的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 compose文件如下所示:

# 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"

我看过这篇文章,那里的人似乎也有类似的问题: 如何在gunicorn中使用Django日志记录,但是disable_existing_loggers已经设置为False

我找到了答案,我不得不将记录仪更改为gunicorn并且现在可以正常使用了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM