Add new file
This commit is contained in:
53
core/utils/logger.py
Normal file
53
core/utils/logger.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
"""
|
||||||
|
Настройка логирования для бота.
|
||||||
|
Создаёт логгер с выводом в консоль и в файл.
|
||||||
|
Уровень логирования может быть установлен в конфиге (DEBUG для разработки, INFO для production).
|
||||||
|
|
||||||
|
Изменения: удалён aiomysql из списка шумных библиотек (заменён на asyncpg).
|
||||||
|
"""
|
||||||
|
|
||||||
|
import logging
|
||||||
|
import sys
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logging(profile_name: str, log_file: Path, log_level: int = logging.INFO):
|
||||||
|
"""
|
||||||
|
Инициализирует логирование:
|
||||||
|
- вывод в консоль (StreamHandler)
|
||||||
|
- вывод в файл (FileHandler)
|
||||||
|
- снижает уровень шума для сторонних библиотек (slixmpp, asyncpg, qdrant_client и др.)
|
||||||
|
"""
|
||||||
|
log_format = '%(asctime)s [%(levelname)s] %(name)s: %(message)s'
|
||||||
|
# Формат даты: 2026-05-20 15:30:00
|
||||||
|
date_format = '%Y-%m-%d %H:%M:%S'
|
||||||
|
|
||||||
|
# Настройка корневого логгера
|
||||||
|
logging.basicConfig(
|
||||||
|
level=log_level,
|
||||||
|
format=log_format,
|
||||||
|
datefmt=date_format,
|
||||||
|
handlers=[
|
||||||
|
logging.StreamHandler(sys.stdout), # вывод в консоль
|
||||||
|
logging.FileHandler(log_file, encoding='utf-8') # вывод в файл
|
||||||
|
]
|
||||||
|
)
|
||||||
|
|
||||||
|
# Уменьшаем многословность некоторых библиотек (они пишут много DEBUG)
|
||||||
|
noisy_loggers = [
|
||||||
|
"slixmpp",
|
||||||
|
"asyncpg", # вместо aiomysql (PostgreSQL)
|
||||||
|
"qdrant_client",
|
||||||
|
"httpx",
|
||||||
|
"gigachat",
|
||||||
|
"urllib3",
|
||||||
|
"asyncio",
|
||||||
|
"aiohttp"
|
||||||
|
]
|
||||||
|
for lib in noisy_loggers:
|
||||||
|
logging.getLogger(lib).setLevel(logging.WARNING)
|
||||||
|
|
||||||
|
# Для особо шумных можно ещё снизить, но оставляем WARNING
|
||||||
|
logging.getLogger("requests").setLevel(logging.WARNING)
|
||||||
|
logging.getLogger("urllib3").setLevel(logging.WARNING)
|
||||||
Reference in New Issue
Block a user