summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorNick Barrett <nick@beeper.com>2021-10-08 12:08:25 +0100
committerGitHub <noreply@github.com>2021-10-08 13:08:25 +0200
commitbb228f35237879b0cae93e3b5efab468b94a1e5b (patch)
treeb2d94d396b100e081eb55279cb9b300474266394 /tests
parentFix CI to run the unit tests without optional deps (#11017) (diff)
downloadsynapse-bb228f35237879b0cae93e3b5efab468b94a1e5b.tar.xz
Include exception in json logging (#11028)
Diffstat (limited to 'tests')
-rw-r--r--tests/logging/test_terse_json.py28
1 files changed, 28 insertions, 0 deletions
diff --git a/tests/logging/test_terse_json.py b/tests/logging/test_terse_json.py
index f73fcd684e..96f399b7ab 100644
--- a/tests/logging/test_terse_json.py
+++ b/tests/logging/test_terse_json.py
@@ -198,3 +198,31 @@ class TerseJsonTestCase(LoggerCleanupMixin, TestCase):
         self.assertEqual(log["url"], "/_matrix/client/versions")
         self.assertEqual(log["protocol"], "1.1")
         self.assertEqual(log["user_agent"], "")
+
+    def test_with_exception(self):
+        """
+        The logging exception type & value should be added to the JSON response.
+        """
+        handler = logging.StreamHandler(self.output)
+        handler.setFormatter(JsonFormatter())
+        logger = self.get_logger(handler)
+
+        try:
+            raise ValueError("That's wrong, you wally!")
+        except ValueError:
+            logger.exception("Hello there, %s!", "wally")
+
+        log = self.get_log_line()
+
+        # The terse logger should give us these keys.
+        expected_log_keys = [
+            "log",
+            "level",
+            "namespace",
+            "exc_type",
+            "exc_value",
+        ]
+        self.assertCountEqual(log.keys(), expected_log_keys)
+        self.assertEqual(log["log"], "Hello there, wally!")
+        self.assertEqual(log["exc_type"], "ValueError")
+        self.assertEqual(log["exc_value"], "That's wrong, you wally!")