diff options
Diffstat (limited to 'src/pyssg/per_level_formatter.py')
-rw-r--r-- | src/pyssg/per_level_formatter.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/pyssg/per_level_formatter.py b/src/pyssg/per_level_formatter.py new file mode 100644 index 0000000..2010483 --- /dev/null +++ b/src/pyssg/per_level_formatter.py @@ -0,0 +1,28 @@ +import logging +from logging import Formatter + + +class PerLevelFormatter(logging.Formatter): + # colors for the terminal in ansi + yellow = "\x1b[33m" + red = "\x1b[31m" + bold_red = "\x1b[31;1m" + reset = "\x1b[0m" + + DATE_FMT = '%Y-%m-%d %H:%M:%S' + COMMON_FMT = '[%(levelname)s] [%(module)s:%(funcName)s:%(lineno)d]: %(message)s' + FORMATS = { + logging.DEBUG: COMMON_FMT, + logging.INFO: '%(message)s', + logging.WARNING: f'{yellow}{COMMON_FMT}{reset}', + logging.ERROR: f'{red}{COMMON_FMT}{reset}', + logging.CRITICAL: f'{bold_red}{COMMON_FMT}{reset}' + } + + + def format(self, record: str) -> str: + fmt: str = self.FORMATS.get(record.levelno) + formatter: Formatter = logging.Formatter( + fmt=fmt, datefmt=self.DATE_FMT, style='%') + + return formatter.format(record) |