我使用下面的日志设置与django项目(也使用sentry/raven)。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,
},
},
}
为了使其工作,您必须将“文件处理程序添加到每个记录器,如下所示:
否则,记录器不会向指定的文件写入任何内容。
我也遇到过同样的问题。结果是权限问题。当我在配置日志记录之后第一次运行开发服务器时,它创建了本地用户拥有的文件
/var/log/django/request.log
(stretch),模式为644。当我启动“生产”服务器(nginx/uwsgi)时,该服务将作为www数据用户运行,并且无法打开
/var/log/django/request.log
进行写入。简单地删除日志文件并重新启动uwsgi就足够了,但是我必须想出一个更优雅的长期解决方案。这是一个Quick Answer
更完整:
在Django日志记录设置中,遵循以下脚本:
测试:
相关问题 更多 >
编程相关推荐