- /rag/commands/expert.py - /core/services/__init__.py - /core/services/embedding_service.py - /core/services/file_service.py - /core/services/giga_client.py - /core/services/kb_service.py - /core/services/postgres_service.py - /core/services/qdrant_service.py - /core/services/reranker_service.py - /core/functions/__init__.py - /core/functions/check_consistency.py - /core/functions/check_spelling.py - /core/functions/critique_answer.py - /core/functions/expand_query.py - /core/functions/extract_metrics.py - /core/functions/file_processor.py - /core/functions/generate_document.py - /core/functions/intent_classify.py - /core/functions/rerank_context.py - /core/functions/summarize_document.py - /core/utils/__init__.py - /core/utils/arg_parser.py - /core/utils/config_loader.py - /core/utils/layout_converter.py - /core/utils/logger.py - /core/utils/text_utils.py - /core/utils/web_utils.py - /bots/commands/__init__.py - /bots/commands/base.py - /bots/commands/create.py - /core/commands/global_remove.py - /core/commands/help.py - /core/commands/info.py - /core/commands/kb.py - /core/commands/learn.py - /core/commands/other.py - /core/commands/registry.py - /core/commands/stats.py - /core/commands/template.py - /core/handlers/__init__.py - /core/handlers/message_handler.py - /core/workers/__init__.py - /core/workers/indexing_worker.py - /core/xmpp/__init__.py - /core/xmpp/client.py - /bots/commands/global_remove.py - /bots/commands/help.py - /bots/commands/info.py - /bots/commands/kb.py - /bots/commands/registry.py - /bots/commands/other.py - /bots/commands/template.py - /bots/commands/learn.py - /bots/commands/stats.py - /bots/handlers/message_handler.py - /bots/handlers/__init__.py - /bots/workers/__init__.py - /bots/workers/indexing_worker.py - /bots/xmpp/__init__.py - /bots/xmpp/client.py - /rag/services/qdrant_service.py - /rag/services/giga_client.py - /rag/services/embedding_service.py - /rag/services/reranker_service.py - /rag/services/__init__.py - /rag/services/file_service.py - /rag/services/postgres_service.py - /rag/services/kb_service.py - /rag/functions/check_spelling.py - /rag/functions/__init__.py - /rag/functions/extract_metrics.py - /rag/functions/generate_document.py - /rag/functions/expand_query.py - /rag/functions/critique_answer.py - /rag/functions/file_processor.py - /rag/functions/check_consistency.py - /rag/functions/summarize_document.py - /rag/functions/rerank_context.py - /rag/functions/intent_classify.py - /rag/utils/__init__.py - /rag/utils/layout_converter.py - /rag/utils/text_utils.py - /rag/utils/arg_parser.py - /rag/utils/config_loader.py - /rag/utils/logger.py - /rag/utils/web_utils.py
53 lines
2.0 KiB
Python
53 lines
2.0 KiB
Python
# -*- 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) |