Skip to content

Commit 7925007

Browse files
author
mbirger
committed
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.
1 parent c548c22 commit 7925007

File tree

1 file changed

+10
-0
lines changed

1 file changed

+10
-0
lines changed

kafka_logger/handlers.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -287,9 +287,19 @@ def unhandled_exception(self, exctype, exception, traceback):
287287
traceback (traceback): traceback object
288288
"""
289289
if self.unhandled_exception_logger is not None:
290+
if sys.version_info[0] < 3: # Python 2 only
291+
# built-in logging exception() call ignores exc_info
292+
# it tries to get sys.exc_info for the second time
293+
# sys.exc_info returns (None, None, None) w/o context
294+
# this override fixes exception logging in Python 2
295+
original_exc_info = sys.exc_info
296+
sys.exc_info = lambda: (exctype, exception, traceback, )
290297
self.unhandled_exception_logger.exception(
291298
"Unhandled top-level exception",
292299
exc_info=(exctype, exception, traceback, ))
300+
if sys.version_info[0] < 3:
301+
# remove exc_info override back
302+
sys.exc_info = original_exc_info
293303

294304
def close(self):
295305
"""Close the handler."""

0 commit comments

Comments
 (0)