From c6be8fa7ee4f3d3f251cc37b1bfbf0a07c8c5598 Mon Sep 17 00:00:00 2001 From: Peter Baumgartner Date: Wed, 15 Nov 2017 15:59:04 -0700 Subject: [PATCH] Tweak to make `request_id` attribute configurable The use case I have for this is logging to Systemd's Journal. The logging handler they provide can pass extra record attributes as KEY=value to the journal, but only if the key is uppercase. See https://www.freedesktop.org/software/systemd/python-systemd/journal.html#journalhandler-class --- README.md | 2 ++ log_request_id/filters.py | 7 ++++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 4366b08..e1d8170 100644 --- a/README.md +++ b/README.md @@ -66,6 +66,8 @@ LOGGING = { 'filters': { 'request_id': { '()': 'log_request_id.filters.RequestIDFilter' + # Optionally change the default `request_id` attribute + # 'request_id_attr': 'REQUEST_UID', } }, 'formatters': { diff --git a/log_request_id/filters.py b/log_request_id/filters.py index 589811a..228ad48 100644 --- a/log_request_id/filters.py +++ b/log_request_id/filters.py @@ -4,6 +4,11 @@ class RequestIDFilter(logging.Filter): + def __init__(self, name='', request_id_attr='request_id'): + self.request_id_attr = request_id_attr + super(RequestIDFilter, self).__init__(name) + def filter(self, record): - record.request_id = getattr(local, 'request_id', NO_REQUEST_ID) + setattr(record, self.request_id_attr, + getattr(local, 'request_id', NO_REQUEST_ID)) return True