Skip to content

Commit dfebd48

Browse files
committed
fix: add ability to pass handler to loopstructural logger
use for integration with qgis
1 parent 2f6e0ed commit dfebd48

File tree

1 file changed

+29
-12
lines changed

1 file changed

+29
-12
lines changed

LoopStructural/__init__.py

Lines changed: 29 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,26 +29,43 @@
2929
logger.info("Imported LoopStructural")
3030

3131

32-
def setLogging(level="info"):
32+
def setLogging(level="info", handler=None):
3333
"""
34-
Set the logging parameters for log file
34+
Set the logging parameters for log file or custom handler
3535
3636
Parameters
3737
----------
38-
filename : string
39-
name of file or path to file
40-
level : str, optional
41-
'info', 'warning', 'error', 'debug' mapped to logging levels, by default 'info'
38+
level : str
39+
'info', 'warning', 'error', 'debug'
40+
handler : logging.Handler, optional
41+
A logging handler to use instead of the default StreamHandler
4242
"""
4343
import LoopStructural
4444

45-
logger = getLogger(__name__)
46-
4745
levels = get_levels()
48-
level = levels.get(level, logging.WARNING)
49-
LoopStructural.ch.setLevel(level)
46+
level_value = levels.get(level, logging.WARNING)
47+
48+
# Create default handler if none provided
49+
if handler is None:
50+
handler = logging.StreamHandler()
51+
52+
formatter = logging.Formatter(
53+
"%(levelname)s: %(asctime)s: %(filename)s:%(lineno)d -- %(message)s"
54+
)
55+
handler.setFormatter(formatter)
56+
handler.setLevel(level_value)
5057

58+
# Replace handlers in all known loggers
5159
for name in LoopStructural.loggers:
5260
logger = logging.getLogger(name)
53-
logger.setLevel(level)
54-
logger.info(f'Set logging to {level}')
61+
logger.handlers = []
62+
logger.addHandler(handler)
63+
logger.setLevel(level_value)
64+
65+
# Also apply to main module logger
66+
main_logger = logging.getLogger(__name__)
67+
main_logger.handlers = []
68+
main_logger.addHandler(handler)
69+
main_logger.setLevel(level_value)
70+
71+
main_logger.info(f"Set logging to {level}")

0 commit comments

Comments
 (0)