From 79250071d57c5e4ea4c5b4929866d270b5f985b7 Mon Sep 17 00:00:00 2001 From: mbirger Date: Tue, 16 Jul 2019 10:15:09 +0200 Subject: [PATCH] Fix exception logging in Python2 logging.exception() call ignores provided exc_info. The fix is applied for < Pyhton3 only. You can run examples/simple.py with Python2 to verify the fix. --- kafka_logger/handlers.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/kafka_logger/handlers.py b/kafka_logger/handlers.py index 828abee..7799ad1 100644 --- a/kafka_logger/handlers.py +++ b/kafka_logger/handlers.py @@ -287,9 +287,19 @@ def unhandled_exception(self, exctype, exception, traceback): traceback (traceback): traceback object """ if self.unhandled_exception_logger is not None: + if sys.version_info[0] < 3: # Python 2 only + # built-in logging exception() call ignores exc_info + # it tries to get sys.exc_info for the second time + # sys.exc_info returns (None, None, None) w/o context + # this override fixes exception logging in Python 2 + original_exc_info = sys.exc_info + sys.exc_info = lambda: (exctype, exception, traceback, ) self.unhandled_exception_logger.exception( "Unhandled top-level exception", exc_info=(exctype, exception, traceback, )) + if sys.version_info[0] < 3: + # remove exc_info override back + sys.exc_info = original_exc_info def close(self): """Close the handler."""