Skip to content
This repository was archived by the owner on Oct 23, 2023. It is now read-only.

Commit 93b8aab

Browse files
author
Til Boerner
committed
Set up celery task logger with SentryHandler
1 parent 03559bb commit 93b8aab

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

raven/contrib/celery/__init__.py

+21-3
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111

1212
from celery.exceptions import SoftTimeLimitExceeded
1313
from celery.signals import (
14-
after_setup_logger, task_failure, task_prerun, task_postrun
15-
)
14+
after_setup_logger, after_setup_task_logger,
15+
task_failure, task_prerun, task_postrun)
1616
from raven.handlers.logging import SentryHandler
1717

1818

@@ -46,10 +46,28 @@ def process_logger_event(sender, logger, loglevel, logfile, format,
4646
if isinstance(h, SentryHandler):
4747
h.addFilter(filter_)
4848
return False
49+
logger.addHandler(handler)
4950

51+
def fix_task_logger(sender, logger=None, **kwargs):
52+
# If the task logger is set up to not propagate (as Celery is bound
53+
# to do), give it a SentryHandler from a parent logger. However, if
54+
# no parent is using Sentry, the task logger should not, either.
55+
if not logger or logger.propagate:
56+
return
57+
if any(isinstance(h, SentryHandler) for h in logger.handlers):
58+
return
5059
logger.addHandler(handler)
5160

52-
after_setup_logger.connect(process_logger_event, weak=False)
61+
after_setup_logger.connect(
62+
process_logger_event,
63+
weak=False,
64+
dispatch_uid='raven.contrib.celery.process_logger_event',
65+
)
66+
after_setup_task_logger.connect(
67+
fix_task_logger,
68+
weak=False,
69+
dispatch_uid='raven.contrib.celery.fix_task_logger',
70+
)
5371

5472

5573
class SentryCeleryHandler(object):

0 commit comments

Comments
 (0)