summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmin Ronacher <armin.ronacher@active-4.com>2016-10-18 12:57:15 +0200
committerArmin Ronacher <armin.ronacher@active-4.com>2016-10-18 12:57:15 +0200
commita4ccee6d55d8ffe831cd61d13cc02e9cb1c2b4f9 (patch)
treeacec8caba1443cee7d9dbcfeaf28685ed0791df5
parent1a4bb009f590a67a5ca701c4060c3560be73f6cf (diff)
downloadraven-a4ccee6d55d8ffe831cd61d13cc02e9cb1c2b4f9.tar.gz
Added register_logging_handler
-rw-r--r--raven/breadcrumbs.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/raven/breadcrumbs.py b/raven/breadcrumbs.py
index 96d33ef..c2e4353 100644
--- a/raven/breadcrumbs.py
+++ b/raven/breadcrumbs.py
@@ -8,6 +8,7 @@ from raven._compat import iteritems, get_code, text_type, string_types
from raven.utils import once
+special_logging_handlers = []
special_logger_handlers = {}
@@ -97,6 +98,11 @@ def record(message=None, timestamp=None, level=None, category=None,
def _record_log_breadcrumb(logger, level, msg, *args, **kwargs):
+ for handler in special_logging_handlers:
+ rv = handler(logger, level, msg, args, kwargs)
+ if rv:
+ return
+
handler = special_logger_handlers.get(logger.name)
if handler is not None:
rv = handler(logger, level, msg, args, kwargs)
@@ -247,6 +253,15 @@ def register_special_log_handler(name_or_logger, callback):
special_logger_handlers[name] = callback
+def register_logging_handler(callback):
+ """Registers a callback for log handling. The callback is invoked
+ with give arguments: `logger`, `level`, `msg`, `args` and `kwargs`
+ which are the values passed to the logging system. If the callback
+ returns `True` the default handling is disabled.
+ """
+ special_logging_handlers.append(callback)
+
+
hooked_libraries = {}