File tree Expand file tree Collapse file tree 1 file changed +25
-2
lines changed
_delphi_utils_python/delphi_utils Expand file tree Collapse file tree 1 file changed +25
-2
lines changed Original file line number Diff line number Diff line change 1
1
"""Structured logger utility for creating JSON logs in Delphi pipelines."""
2
2
import logging
3
+ import sys
4
+ import threading
3
5
import structlog
4
6
5
- def get_structured_logger (name = __name__ , filename = None ):
7
+
8
+ def handle_exceptions (logger ):
9
+ """Handle exceptions using the provided logger."""
10
+ def exception_handler (etype , value , traceback ):
11
+ logger .exception ("Top-level exception occurred" ,
12
+ exc_info = (etype , value , traceback ))
13
+
14
+ def multithread_exception_handler (args ):
15
+ exception_handler (args .exc_type , args .exc_value , args .exc_traceback )
16
+
17
+ sys .excepthook = exception_handler
18
+ threading .excepthook = multithread_exception_handler
19
+
20
+
21
+ def get_structured_logger (name = __name__ ,
22
+ filename = None ,
23
+ log_exceptions = True ):
6
24
"""Create a new structlog logger.
7
25
8
26
Use the logger returned from this in indicator code using the standard
@@ -66,4 +84,9 @@ def get_structured_logger(name = __name__, filename = None):
66
84
cache_logger_on_first_use = True ,
67
85
)
68
86
69
- return structlog .get_logger (name )
87
+ logger = structlog .get_logger (name )
88
+
89
+ if log_exceptions :
90
+ handle_exceptions (logger )
91
+
92
+ return logger
You can’t perform that action at this time.
0 commit comments