diff options
author | David Cramer <dcramer@gmail.com> | 2016-11-20 15:49:37 -0800 |
---|---|---|
committer | David Cramer <dcramer@gmail.com> | 2016-11-20 16:13:57 -0800 |
commit | 920aaa512ae6ae9bf33ebb875e2909d3a11fe7f6 (patch) | |
tree | a97926b3a474242e8b9b2911f9fcd79229818801 | |
parent | 9a5757c070eb4cf3b06168bf1914ffee978c40f9 (diff) | |
download | raven-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.py | 8 | ||||
-rw-r--r-- | tests/handlers/logging/tests.py | 9 |
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) |