logging: add setLogger, fix getLogger, and add logger name if not default

This commit is contained in:
Izalia Mae 2021-05-22 08:28:53 -04:00
parent 5cd4eff2b0
commit c8d927abb3

View file

@ -10,7 +10,7 @@ stdout = sys.stdout
class Log(): class Log():
def __init__(self, config=dict()): def __init__(self, name=None, config=dict()):
'''setup the logger''' '''setup the logger'''
if not isinstance(config, dict): if not isinstance(config, dict):
raise TypeError(f'config is not a dict') raise TypeError(f'config is not a dict')
@ -35,6 +35,7 @@ class Log():
'MERP': 'MERP' 'MERP': 'MERP'
} }
self.name = name
self.config = {'windows': sys.executable.endswith('pythonw.exe')} self.config = {'windows': sys.executable.endswith('pythonw.exe')}
self.setConfig(self._parseConfig(config)) self.setConfig(self._parseConfig(config))
@ -123,13 +124,20 @@ class Log():
levelNum = self._lvlCheck(level) levelNum = self._lvlCheck(level)
if type(level) == int: if type(level) == int:
level = _getLevelName(level) level = self._getLevelName(level)
if levelNum < self.config['levelnum']: if levelNum < self.config['levelnum']:
return return
message = ' '.join([str(message) for message in msg]) message = ' '.join([str(message) for message in msg])
output = f'{level}: {message}\n'
if self.name:
output = f'[{self.name}] '
else:
output = ''
output += f'{level}: {message}\n'
if self.config['systemnotif']: if self.config['systemnotif']:
self.config['systemnotif'].New(level, message) self.config['systemnotif'].New(level, message)
@ -165,18 +173,21 @@ class Log():
self.log('MERP', *msg) self.log('MERP', *msg)
def getLogger(loginst, config=None): def getLogger(name):
'''get a logging instance and create one if it doesn't exist''' '''get a logging instance and create one if it doesn't exist'''
Logger = logger.get(loginst) log = logger.get(name)
if not Logger: if not log:
if config: raise InvalidLogger(f'logger "{name}" doesn\'t exist')
logger[loginst] = Log(config)
else: return log
raise InvalidLogger(f'logger "{loginst}" doesn\'t exist')
def setLogger(name, config={}):
log = Log(name, config)
logger[name.lower()] = log
return log
return logger[loginst]
class InvalidLevel(Exception): class InvalidLevel(Exception):
'''Raise when an invalid logging level was specified''' '''Raise when an invalid logging level was specified'''