From 41e0c8be286de5083e5d9f77d14603a1c8bb21f1 Mon Sep 17 00:00:00 2001
From: Maximilian Moser <maximilian.moser@tuwien.ac.at>
Date: Fri, 26 May 2023 14:30:38 +0200
Subject: [PATCH] Handle working outside of request context in logging
 formatter

---
 invenio_config_tuw/formatters.py | 19 +++++++++++++------
 1 file changed, 13 insertions(+), 6 deletions(-)

diff --git a/invenio_config_tuw/formatters.py b/invenio_config_tuw/formatters.py
index 0b36d0c..dd1e296 100644
--- a/invenio_config_tuw/formatters.py
+++ b/invenio_config_tuw/formatters.py
@@ -32,13 +32,20 @@ class CustomFormatter(Formatter):
     """Custom logging formatter that provides more details."""
 
     def __init__(self, fmt=custom_format, **kwargs):
-        super(CustomFormatter, self).__init__(fmt=fmt, **kwargs)
+        super().__init__(fmt=fmt, **kwargs)
 
     def format(self, record):
-        user_id = "Anonymous"
-        if current_user is not None and current_user.is_authenticated:
-            user_id = current_user.id
+        try:
+            user_id = "Anonymous"
+            if current_user and current_user.is_authenticated:
+                user_id = current_user.id
+
+            record.user_id = user_id
+            record.request_url = request.base_url
+
+        except RuntimeError:
+            # this happens when we're working outside a request context
+            record.user_id = None
+            record.request_url = None
 
-        record.user_id = user_id
-        record.request_url = request.base_url
         return super(CustomFormatter, self).format(record)
-- 
GitLab