Bot config and channel init
This commit is contained in:
parent
8ca93c1bab
commit
72edbe6599
7 changed files with 499 additions and 109 deletions
60
breadtube_bot/logger.py
Normal file
60
breadtube_bot/logger.py
Normal file
|
|
@ -0,0 +1,60 @@
|
|||
from logging import handlers
|
||||
import logging
|
||||
from pathlib import Path
|
||||
import sys
|
||||
|
||||
|
||||
class ConsoleColor:
|
||||
"""Simple shortcut to use colors in console"""
|
||||
HEADER = '\033[95m'
|
||||
BLUE = '\033[94m'
|
||||
GREEN = '\033[92m'
|
||||
ORANGE = '\033[93m'
|
||||
RED = '\033[91m'
|
||||
ENDCOLOR = '\033[0m'
|
||||
BOLD = '\033[1m'
|
||||
UNDERLINE = '\033[4m'
|
||||
|
||||
|
||||
class ColoredFormatter(logging.Formatter):
|
||||
"""Formatter changing the record during format : adds colors to levelname"""
|
||||
def format(self, record):
|
||||
levelno = record.levelno
|
||||
if levelno == logging.ERROR:
|
||||
levelname_color = ConsoleColor.RED + record.levelname + ConsoleColor.ENDCOLOR
|
||||
elif levelno == logging.WARNING:
|
||||
levelname_color = ConsoleColor.ORANGE + record.levelname + ConsoleColor.ENDCOLOR
|
||||
elif levelno == logging.INFO:
|
||||
levelname_color = ConsoleColor.GREEN + record.levelname + ConsoleColor.ENDCOLOR
|
||||
elif levelno == logging.DEBUG:
|
||||
levelname_color = ConsoleColor.BLUE + record.levelname + ConsoleColor.ENDCOLOR
|
||||
else:
|
||||
levelname_color = record.levelname
|
||||
record.levelname = levelname_color
|
||||
return logging.Formatter.format(self, record)
|
||||
|
||||
|
||||
def create_logger(name: str, level: int, log_dir: Path | None = None, stdout=False) -> logging.Logger:
|
||||
logger = logging.getLogger(name)
|
||||
logger.setLevel(level)
|
||||
|
||||
if log_dir is not None:
|
||||
log_dir.mkdir(parents=True, exist_ok=True)
|
||||
logger.setLevel(level)
|
||||
file_log_handler = handlers.RotatingFileHandler(
|
||||
log_dir / f'{name}.log',
|
||||
maxBytes=500000,
|
||||
backupCount=5)
|
||||
file_log_handler.setLevel(level)
|
||||
log_formatter = logging.Formatter('%(asctime)s %(levelname)s : %(message)s')
|
||||
file_log_handler.setFormatter(log_formatter)
|
||||
logger.addHandler(file_log_handler)
|
||||
|
||||
if stdout:
|
||||
terminal_log_handler = logging.StreamHandler(sys.stdout)
|
||||
terminal_log_handler.setLevel(level)
|
||||
colored_log_formatter = ColoredFormatter('%(asctime)s %(levelname)s : %(message)s')
|
||||
terminal_log_handler.setFormatter(colored_log_formatter)
|
||||
logger.addHandler(terminal_log_handler)
|
||||
|
||||
return logger
|
||||
Loading…
Add table
Add a link
Reference in a new issue