summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Cramer <dcramer@gmail.com>2016-11-20 15:49:37 -0800
committerDavid Cramer <dcramer@gmail.com>2016-11-20 16:13:57 -0800
commit920aaa512ae6ae9bf33ebb875e2909d3a11fe7f6 (patch)
treea97926b3a474242e8b9b2911f9fcd79229818801
parent9a5757c070eb4cf3b06168bf1914ffee978c40f9 (diff)
downloadraven-920aaa512ae6ae9bf33ebb875e2909d3a11fe7f6.tar.gz
Merge logger tagsfeature/merge-tags
When using both handler defined and logger defined tags, merge them allowing the handler to override the defaults.
-rw-r--r--raven/handlers/logging.py8
-rw-r--r--tests/handlers/logging/tests.py9
2 files changed, 13 insertions, 4 deletions
diff --git a/raven/handlers/logging.py b/raven/handlers/logging.py
index ade0c42..70534e9 100644
--- a/raven/handlers/logging.py
+++ b/raven/handlers/logging.py
@@ -168,10 +168,10 @@ class SentryHandler(logging.Handler, object):
data['level'] = record.levelno
data['logger'] = record.name
- if hasattr(record, 'tags'):
- kwargs['tags'] = record.tags
- elif self.tags:
- kwargs['tags'] = self.tags
+ kwargs['tags'] = tags = {}
+ if self.tags:
+ tags.update(self.tags)
+ tags.update(getattr(record, 'tags', {}))
kwargs.update(handler_kwargs)
diff --git a/tests/handlers/logging/tests.py b/tests/handlers/logging/tests.py
index 05981ca..3a222f5 100644
--- a/tests/handlers/logging/tests.py
+++ b/tests/handlers/logging/tests.py
@@ -229,6 +229,15 @@ class LoggingIntegrationTest(TestCase):
event = self.client.events.pop(0)
assert event['tags'] == {'foo': 'bar'}
+ def test_tags_merge(self):
+ handler = SentryHandler(self.client, tags={'foo': 'bar', 'biz': 'baz'})
+ record = self.make_record('Message', extra={'tags': {'foo': 'faz'}})
+ handler.emit(record)
+
+ self.assertEqual(len(self.client.events), 1)
+ event = self.client.events.pop(0)
+ assert event['tags'] == {'foo': 'faz', 'biz': 'baz'}
+
def test_fingerprint_on_event(self):
record = self.make_record('Message', extra={'fingerprint': ['foo']})
self.handler.emit(record)