11import logging
22import os
33
4- level_name = os .environ .get ('CP2KDATA_LOG_LEVEL' , 'INFO' )
4+ _LOGGER_NAME = "cp2kdata"
5+
6+ level_name = os .environ .get ("CP2KDATA_LOG_LEVEL" , "INFO" )
57level = logging ._nameToLevel .get (level_name , logging .INFO )
68
79# format to include timestamp and module
8- if level_name == 'DEBUG' :
9- logging .basicConfig (format = 'CP2KDATA| %(asctime)s - %(levelname)-8s %(name)-40s: %(message)s' , level = level )
10+ if level_name == "DEBUG" :
11+ _formatter = logging .Formatter (
12+ "CP2KDATA| %(asctime)s - %(levelname)-8s %(name)-40s: %(message)s"
13+ )
1014else :
11- logging .basicConfig (format = 'CP2KDATA| %(message)s' , level = level )
15+ _formatter = logging .Formatter ("CP2KDATA| %(message)s" )
16+
17+ _logger = logging .getLogger (_LOGGER_NAME )
18+ _logger .setLevel (level )
19+ _logger .propagate = True
20+
21+ # Only attach a handler when the root logger has no handlers.
22+ # This keeps standalone behavior without changing global logging config.
23+ if not logging .getLogger ().handlers and not _logger .handlers :
24+ _handler = logging .StreamHandler ()
25+ _handler .setLevel (level )
26+ _handler .setFormatter (_formatter )
27+ _logger .addHandler (_handler )
28+
1229# suppress transitions logging
1330# logging.getLogger('transitions.core').setLevel(logging.WARNING)
1431
32+
1533def get_logger (name = None ):
16- return logging .getLogger (name )
34+ if name :
35+ return logging .getLogger (f"{ _LOGGER_NAME } .{ name } " )
36+ return _logger
0 commit comments