diff --git a/BlackDynamite/bdlogging.py b/BlackDynamite/bdlogging.py index 997054b..99defaa 100644 --- a/BlackDynamite/bdlogging.py +++ b/BlackDynamite/bdlogging.py @@ -1,111 +1,111 @@ #!/usr/bin/env python3 from __future__ import print_function import logging import traceback import os ################################################################ def invalidPrint(x): raise Exception('print should not be used in that class: ' 'use the logging system instead: "{0}"'.format(x)) ################################################################ file_handler = None def setFileHandler(logger, streamformatter): if globals()['file_handler'] is None: # print("resetting the file for {0}".format(logger.name)) f = open('bd.log', 'w') f.close() globals()['file_handler'] = logging.FileHandler('bd.log') file_handler = globals()['file_handler'] file_handler.setFormatter(streamformatter) if file_handler not in logger.handlers: logger.addHandler(file_handler) ################################################################ Parent = logging.getLoggerClass() class BDlogger(Parent): def __init__(self, name): super().__init__(name) self.name = name self.logger_screen = Parent(name + 'screen') self.logger_file = Parent(name + 'file') self.streamformatter = logging.Formatter( fmt='%(levelname)s:%(foo)50s:%(f)15s:%(l)s:' + ' '*10 + '%(message)s') self.screen_handler = logging.StreamHandler() self.screen_handler.setFormatter(self.streamformatter) self.logger_screen.addHandler(self.screen_handler) self.enable_file = False self.setScreenLevel(logging.INFO) def setLogFileLevel(self, level): self.logger_file.setLevel(level) def setScreenLevel(self, level): self.logger_screen.setLevel(level) def activateFileLog(self, level=logging.DEBUG): setFileHandler(self.logger_file, self.streamformatter) self.enable_file = True self.setLogFileLevel(level) def getExtra(self): extra = {} tr = traceback.extract_stack(limit=3) tr = tr[0] fname = os.path.basename(tr[0]) extra['foo'] = tr[2] extra['f'] = fname extra['l'] = tr[1] return extra - def debug(self, x): + def debug(self, x, *args, **kwargs): self.logger_screen.debug(x, extra=self.getExtra()) if self.enable_file is True: self.logger_file.debug(x, extra=self.getExtra()) - def warning(self, x): + def warning(self, x, *args, **kwargs): self.logger_screen.warning(x, extra=self.getExtra()) if self.enable_file is True: self.logger_file.warning(x, extra=self.getExtra()) - def info(self, x): + def info(self, x, *args, **kwargs): self.logger_screen.info(x, extra=self.getExtra()) if self.enable_file is True: self.logger_file.info(x, extra=self.getExtra()) - def error(self, x): + def error(self, x, *args, **kwargs): self.logger_screen.error(x, extra=self.getExtra()) if self.enable_file is True: self.logger_file.error(x, extra=self.getExtra()) ################################################################ logging.setLoggerClass(BDlogger) ################################################################ logger = logging.getLogger(__name__) ################################################################ def activateFileLogging(): for name, log in logging.Logger.manager.loggerDict.items(): if isinstance(log, BDlogger): log.activateFileLog() __all__ = ["bdlogging"]