|
19 | 19 | ch.setLevel(logging.WARNING) |
20 | 20 | loggers = {} |
21 | 21 | from .modelling.core.geological_model import GeologicalModel |
| 22 | +from .modelling.core.stratigraphic_column import StratigraphicColumn |
22 | 23 | from .interpolators._api import LoopInterpolator |
23 | 24 | from .interpolators import InterpolatorBuilder |
24 | 25 | from .datatypes import BoundingBox |
|
28 | 29 | logger.info("Imported LoopStructural") |
29 | 30 |
|
30 | 31 |
|
31 | | -def setLogging(level="info"): |
| 32 | +def setLogging(level="info", handler=None): |
32 | 33 | """ |
33 | | - Set the logging parameters for log file |
| 34 | + Set the logging parameters for log file or custom handler |
34 | 35 |
|
35 | 36 | Parameters |
36 | 37 | ---------- |
37 | | - filename : string |
38 | | - name of file or path to file |
39 | | - level : str, optional |
40 | | - '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 |
41 | 42 | """ |
42 | 43 | import LoopStructural |
43 | 44 |
|
44 | | - logger = getLogger(__name__) |
45 | | - |
46 | 45 | levels = get_levels() |
47 | | - level = levels.get(level, logging.WARNING) |
48 | | - 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) |
49 | 57 |
|
| 58 | + # Replace handlers in all known loggers |
50 | 59 | for name in LoopStructural.loggers: |
51 | 60 | logger = logging.getLogger(name) |
52 | | - logger.setLevel(level) |
53 | | - 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