Created
May 14, 2025 08:47
-
-
Save ald2004/2f05d646a88bb94d9a921ea6517dc41e to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import logging | |
| from logging.handlers import TimedRotatingFileHandler | |
| import inspect | |
| import functools | |
| from termcolor import colored | |
| _logger_instance = {} | |
| class _ColorfulFormatter(logging.Formatter): | |
| def __init__(self, *args, **kwargs): | |
| self._root_name = kwargs.pop("root_name") + "." | |
| self._abbrev_name = kwargs.pop("abbrev_name", "") | |
| if len(self._abbrev_name): | |
| self._abbrev_name = self._abbrev_name + "." | |
| super(_ColorfulFormatter, self).__init__(*args, **kwargs) | |
| def formatMessage(self, record): | |
| record.name = record.name.replace(self._root_name, self._abbrev_name) | |
| log = super(_ColorfulFormatter, self).formatMessage(record) | |
| if record.levelno == logging.WARNING: | |
| prefix = colored("WARNING", "red", attrs=["blink"]) | |
| elif record.levelno == logging.ERROR or record.levelno == logging.CRITICAL: | |
| prefix = colored("ERROR", "red", attrs=["blink", "underline"]) | |
| else: | |
| return log | |
| return prefix + " " + log | |
| @functools.lru_cache() | |
| def setup_logger(logname='crkapp'): | |
| if logname in _logger_instance: | |
| return _logger_instance[logname] | |
| frm = inspect.stack()[1] | |
| mod = inspect.getmodule(frm[0]) | |
| name = mod.__name__ if mod else '__main__' | |
| logger = logging.getLogger(name) | |
| if logger.handlers: | |
| _logger_instance[logname] = logger | |
| return logger | |
| logger.setLevel(logging.DEBUG) | |
| console_handler = logging.StreamHandler() | |
| # console_formatter = logging.Formatter( | |
| # "[%(asctime)s] %(name)s %(module)s %(lineno)d: %(message)s", datefmt="%m/%d %H:%M:%S" | |
| # ) | |
| formatter = _ColorfulFormatter( | |
| colored("[%(asctime)s %(filename)s %(module)s %(lineno)d]: ", "green") + "%(message)s", | |
| datefmt="%m/%d %H:%M:%S", | |
| root_name=name, | |
| abbrev_name=str(name), | |
| ) | |
| console_handler.setFormatter(formatter) | |
| logger.addHandler(console_handler) | |
| file_handler = TimedRotatingFileHandler( | |
| filename=f"/dev/shm/adclogs/{logname}.log", | |
| when="midnight", | |
| interval=1, | |
| backupCount=7, | |
| encoding="utf-8", | |
| ) | |
| # file_formatter = logging.Formatter( | |
| # '%(asctime)s - %(name)s:%(lineno)d - %(message)s' | |
| # ) | |
| file_handler.setFormatter(formatter) | |
| logger.addHandler(file_handler) | |
| _logger_instance[logname] = logger | |
| return logger | |
| logger = setup_logger() | |
| # logger.info("System started") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment