Skip to content

Commit 6d865f1

Browse files
committed
handle exceptions in handlers by default
1 parent ab8b0e2 commit 6d865f1

File tree

1 file changed

+10
-1
lines changed

1 file changed

+10
-1
lines changed

adafruit_logging.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,8 @@ def _level_for(value: int) -> str:
140140
- ``args`` - The additional positional arguments provided
141141
"""
142142

143+
raiseExceptions = False
144+
143145

144146
def _logRecordFactory(name, level, msg, args):
145147
return LogRecord(name, level, _level_for(level), msg, time.monotonic(), args)
@@ -338,7 +340,14 @@ def handle(self, record: LogRecord) -> None:
338340
if record.levelno >= self._level:
339341
for handler in self._handlers:
340342
if record.levelno >= handler.level:
341-
handler.emit(record)
343+
try:
344+
handler.emit(record)
345+
except Exception as e: # pylint: disable=broad-except
346+
if raiseExceptions:
347+
raise e
348+
if sys.stderr:
349+
sys.stderr.write(f"Handler {handler} produced exception: "
350+
f"{repr(e)}\n")
342351

343352
def log(self, level: int, msg: str, *args) -> None:
344353
"""Log a message.

0 commit comments

Comments
 (0)