19 from os.path
import isfile
26 """Depreciated. Use LOG instead""" 27 return logging.getLogger(name)
32 def method(cls, *args, **kwargs):
33 cls._log(fn, *args, **kwargs)
35 method.__func__.__doc__ = fn.__doc__
41 Custom logger class that acts like logging.Logger 42 The logger name is automatically generated by the module of the caller 45 >>> LOG.debug('My message: %s', debug_str) 46 13:12:43.673 - :<module>:1 - DEBUG - My message: hi 47 >>> LOG('custom_name').debug('Another message') 48 13:13:10.462 - custom_name - DEBUG - Another message 65 confs = [SYSTEM_CONFIG, USER_CONFIG]
71 except Exception
as e:
72 print(
'couldn\'t load {}: {}'.format(conf, str(e)))
74 cls.
level = logging.getLevelName(config.get(
'log_level',
'INFO'))
75 fmt =
'%(asctime)s.%(msecs)03d - ' \
76 '%(name)s - %(levelname)s - %(message)s' 78 formatter = logging.Formatter(fmt, datefmt)
79 cls.
handler = logging.StreamHandler(sys.stdout)
80 cls.handler.setFormatter(formatter)
87 logger = logging.getLogger(name)
88 logger.propagate =
False 93 LOG._custom_name = name
96 def _log(cls, func, *args, **kwargs):
105 stack = inspect.stack()
114 mod = inspect.getmodule(record[0])
115 module_name = mod.__name__
if mod
else '' 116 name = module_name +
':' + record[3] +
':' + str(record[2])
def _log(cls, func, args, kwargs)
def create_logger(cls, name)
def load_commented_json(filename)
def getLogger(name="MYCROFT")
def merge_dict(base, delta)