Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-04-10 08:39:07

0001 __author__ = "retmas"
0002 
0003 import logging
0004 import logging.config
0005 import logging.handlers
0006 
0007 
0008 class Singleton(type):
0009     def __init__(cls, *args, **kwargs):
0010         super(Singleton, cls).__init__(*args, **kwargs)
0011         cls._instance = None
0012 
0013     def __call__(cls, *args, **kwargs):
0014         if cls._instance is None:
0015             cls._instance = super(Singleton, cls).__call__(*args, **kwargs)
0016         return cls._instance
0017 
0018 
0019 class Logger(object, metaclass=Singleton):
0020     _config = {
0021         "version": 1,
0022         "disable_existing_loggers": False,
0023         "formatters": {"default": {"format": "[%(asctime)s] [%(process)d] [%(levelname)s] [%(module)s] [%(funcName)s:%(lineno)d] - %(message)s"}},
0024         "handlers": {
0025             "console": {
0026                 "level": "DEBUG",
0027                 "class": "logging.StreamHandler",
0028                 "formatter": "default",
0029             }
0030         },
0031         "loggers": {"snakeparser.log": {"handlers": ["console"], "level": "INFO"}},
0032     }
0033 
0034     def __init__(self):
0035         logging.config.dictConfig(self._config)
0036 
0037     @staticmethod
0038     def set_level(level):
0039         Logger.get().setLevel(level)
0040 
0041     @staticmethod
0042     def set_log_file(filename, max_bytes=0, backup_count=0, remove_console=False):
0043         logger = Logger().get()
0044         handler = logging.handlers.RotatingFileHandler(filename, maxBytes=max_bytes, backupCount=backup_count, encoding="utf-8")
0045         handler.formatter = logger.handlers[0].formatter
0046         handler.level = logging.DEBUG
0047         logger.addHandler(handler)
0048         if remove_console:
0049             logger.removeHandler(logger.handlers[0])
0050 
0051     @staticmethod
0052     def get() -> logging.Logger:
0053         return logging.getLogger(__name__)