kev*_*kev 4 django logging celery sentry raven
我不知道什么是错的.到目前为止,日志记录工作正常(我依赖于此),但似乎已经停止了.我写了一个小测试函数(它也不起作用):
core.tasks.py
import logging
from celery.utils.log import get_task_logger
logger = get_task_logger(__name__)
logger.setLevel(logging.DEBUG)
@app.task
def log_error():
logger.error('ERROR')
Run Code Online (Sandbox Code Playgroud)
settings.py
INSTALLED_APPS += (
'raven.contrib.django.raven_compat',
)
LOGGING = {
'version': 1,
'disable_existing_loggers': True,
'root': {
'level': 'INFO', #If set to DEBUG, prints ALL DJANGO debug logs.
'handlers': ['console', 'sentry'],
},
'formatters': {
'simple': {
'format': '%(levelname)s %(message)s'
},
},
'handlers': {
#log everything to the console
'console':{
'level':'DEBUG',
'class':'logging.StreamHandler',
'formatter': 'simple'
},
#logs directly to sentry
'sentry': {
'level': 'ERROR',
'class': 'raven.contrib.django.raven_compat.handlers.SentryHandler',
#'class': 'raven.contrib.django.handlers.SentryHandler', #I have tried both
},
},
'loggers': {
'django.request':{
'handlers': ['console', 'sentry'],
'level': 'DEBUG',
'propagate': False,
},
'celery.task':{
'handlers': ['console', 'sentry'],
'level': 'DEBUG',
'propagate': False,
},
#this is the logger for celery itself
'celery':{
'handlers': ['console', 'sentry'],
'level': 'ERROR',
'propagate': False,
},
},
}
from logging.config import dictConfig
dictConfig(LOGGING)
Run Code Online (Sandbox Code Playgroud)
在Django shell中执行以下日志记录到控制台但它没有到达Sentry:
from core import tasks
tasks.log_error.delay()
Run Code Online (Sandbox Code Playgroud)
它在同步执行任务时有效:
tasks.log_error()
Run Code Online (Sandbox Code Playgroud)
救命!?
Django == 1.6.2,raven == 5.0.0,sentry == 6.3.2,Python 2.7.3
我不得不补充一下
CELERYD_HIJACK_ROOT_LOGGER=False
Run Code Online (Sandbox Code Playgroud)
到我的Django settings.py.
我真的不明白为什么我明确告诉芹菜不要劫持根记录器.
| 归档时间: |
|
| 查看次数: |
2453 次 |
| 最近记录: |