Initial Commit
This commit is contained in:
37
util/generic/log.py
Normal file
37
util/generic/log.py
Normal file
@@ -0,0 +1,37 @@
|
||||
from dataclasses import dataclass
|
||||
from logging.handlers import RotatingFileHandler
|
||||
from enum import IntEnum
|
||||
from typing import Optional
|
||||
import logging
|
||||
|
||||
@dataclass
|
||||
class Log:
|
||||
class Level(IntEnum):
|
||||
CRITICAL = 50
|
||||
FATAL = CRITICAL
|
||||
ERROR = 40
|
||||
WARNING = 30
|
||||
WARN = WARNING
|
||||
INFO = 20
|
||||
DEBUG = 10
|
||||
NOTSET = 0
|
||||
|
||||
name: str
|
||||
level: Level
|
||||
file: Optional[str] = None
|
||||
format: str = '[%(name)s] %(asctime)s - %(levelname)s - %(message)s'
|
||||
date_format: str = '%Y-%m-%d %H:%M:%S'
|
||||
|
||||
def create_logger(self):
|
||||
logger = logging.getLogger(self.name)
|
||||
logger.setLevel(self.level)
|
||||
formatter = logging.Formatter(self.format, self.date_format)
|
||||
self._add_handler(logger, logging.StreamHandler(), formatter)
|
||||
if self.file:
|
||||
self._add_handler(logger, RotatingFileHandler(self.file, maxBytes=1000000, backupCount=3), formatter)
|
||||
return logger
|
||||
|
||||
def _add_handler(self, logger: logging.Logger, handler: logging.Handler, formatter: logging.Formatter):
|
||||
handler.setLevel(self.level)
|
||||
handler.setFormatter(formatter)
|
||||
logger.addHandler(handler)
|
||||
Reference in New Issue
Block a user