Spaces:
Running
Running
File size: 1,737 Bytes
960b1a0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
# utils/logger_setup.py
import logging
from colorlog import ColoredFormatter
def setup_logger(level=logging.INFO, log_file=None):
"""
Настраивает корневой логгер для вывода цветных логов в консоль и
(опционально) записи в файл.
:param level: Уровень логирования (например, logging.DEBUG)
:param log_file: Путь к файлу лога (если не None, логи будут писаться в этот файл)
"""
logger = logging.getLogger()
if logger.hasHandlers():
logger.handlers.clear()
# Консольный хендлер с colorlog
console_handler = logging.StreamHandler()
log_format = (
"%(log_color)s%(asctime)s [%(levelname)s]%(reset)s %(blue)s%(message)s"
)
console_formatter = ColoredFormatter(
log_format,
datefmt="%Y-%m-%d %H:%M:%S",
reset=True,
log_colors={
"DEBUG": "cyan",
"INFO": "green",
"WARNING": "yellow",
"ERROR": "red",
"CRITICAL": "bold_red"
}
)
console_handler.setFormatter(console_formatter)
logger.addHandler(console_handler)
# Если указан log_file, добавляем файловый хендлер
if log_file is not None:
file_handler = logging.FileHandler(log_file, mode="w", encoding="utf-8")
file_format = "%(asctime)s [%(levelname)s] %(message)s"
file_formatter = logging.Formatter(file_format, datefmt="%Y-%m-%d %H:%M:%S")
file_handler.setFormatter(file_formatter)
logger.addHandler(file_handler)
logger.setLevel(level)
return logger
|