Django使用FileHandler无法正常工作

mar*_*cog 5 python django logging sentry

我正在使用django项目下面的日志设置(也使用sentry/raven).哨兵/乌鸦位工作正常,但文件记录不是.创建一个空日志文件,但每当我使用logging.info('foo')时,日志文件中都没有任何内容(即它保持为空).有什么建议?

LOGGING = {
    'version': 1,
    'disable_existing_loggers': True,
    'root': {
        'level': 'WARNING',
        'handlers': ['sentry'],
    },
    'formatters': {
        'verbose': {
            'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s'
        },
    },
    'handlers': {
        'sentry': {
            'level': 'ERROR',
            'class': 'raven.contrib.django.handlers.SentryHandler',
        },
        'file': {
            'level': 'INFO',
            'class': 'logging.FileHandler',
            'filename': '/var/log/django/breeding.log',
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'verbose'
        }
    },
    'loggers': {
        'django.db.backends': {
            'level': 'ERROR',
            'handlers': ['console'],
            'propagate': False,
        },
        'raven': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },
        'sentry.errors': {
            'level': 'DEBUG',
            'handlers': ['console'],
            'propagate': False,
        },
    },
}
Run Code Online (Sandbox Code Playgroud)

Jer*_*tch 2

我遇到了同样的问题。结果发现是权限问题。当我在配置日志记录后第一次运行开发服务器时,它创建了/var/log/django/request.log我的本地用户(stretch)拥有的模式为 644 的文件。

当我启动“生产”服务器(nginx/uwsgi)时,该服务将以 www-data 用户身份运行,并且无法打开进行/var/log/django/request.log写入。只需删除日志文件并重新启动 uwsgi 就足以让它继续运行,但我必须想出一个更优雅的长期修复方案。