Добавлена функция настройки логирования с ротацией файлов в main.py. Реализована логика создания каталога для логов, определения уровня логирования и добавления обработчиков для консольного и файлового вывода. Эти изменения улучшают отслеживание событий и упрощают отладку приложения.
This commit is contained in:
parent
a25c39e9cd
commit
98ba1cb3c1
74
main.py
74
main.py
@ -4,6 +4,7 @@ import logging
|
|||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
import platform
|
import platform
|
||||||
import os
|
import os
|
||||||
|
from logging.handlers import TimedRotatingFileHandler
|
||||||
|
|
||||||
from aiogram import Bot, Dispatcher
|
from aiogram import Bot, Dispatcher
|
||||||
from aiogram.filters import Command
|
from aiogram.filters import Command
|
||||||
@ -15,6 +16,68 @@ from db import OracleDatabase
|
|||||||
from middlewares.db import DbSessionMiddleware
|
from middlewares.db import DbSessionMiddleware
|
||||||
|
|
||||||
|
|
||||||
|
def setup_logging():
|
||||||
|
"""
|
||||||
|
Настройка системы логирования с ротацией файлов и выводом в консоль
|
||||||
|
"""
|
||||||
|
# Создаем каталог logs если он не существует
|
||||||
|
logs_dir = "logs"
|
||||||
|
if not os.path.exists(logs_dir):
|
||||||
|
os.makedirs(logs_dir)
|
||||||
|
print(f"Created logs directory: {logs_dir}")
|
||||||
|
|
||||||
|
# Определяем уровень логирования
|
||||||
|
if getenv("DEBUG", '0') == '1':
|
||||||
|
log_level = logging.INFO
|
||||||
|
else:
|
||||||
|
log_level = logging.WARNING
|
||||||
|
|
||||||
|
# Временно включаем детальное логирование для отладки
|
||||||
|
log_level = logging.INFO
|
||||||
|
|
||||||
|
# Создаем основной логгер
|
||||||
|
logger = logging.getLogger()
|
||||||
|
logger.setLevel(log_level)
|
||||||
|
|
||||||
|
# Очищаем существующие обработчики
|
||||||
|
logger.handlers.clear()
|
||||||
|
|
||||||
|
# Формат логов
|
||||||
|
formatter = logging.Formatter(
|
||||||
|
'%(asctime)s - %(name)s - %(levelname)s - %(message)s',
|
||||||
|
datefmt='%Y-%m-%d %H:%M:%S'
|
||||||
|
)
|
||||||
|
|
||||||
|
# Настройка файлового логирования с ротацией
|
||||||
|
file_handler = TimedRotatingFileHandler(
|
||||||
|
filename=os.path.join(logs_dir, "salvagedb_bot.log"),
|
||||||
|
when='midnight', # Ротация в полночь
|
||||||
|
interval=1, # Каждый день
|
||||||
|
backupCount=30, # Храним 30 дней
|
||||||
|
encoding='utf-8',
|
||||||
|
utc=False # Используем локальное время
|
||||||
|
)
|
||||||
|
file_handler.setLevel(log_level)
|
||||||
|
file_handler.setFormatter(formatter)
|
||||||
|
file_handler.suffix = "%Y-%m-%d" # Формат суффикса для файлов
|
||||||
|
|
||||||
|
# Настройка консольного логирования
|
||||||
|
console_handler = logging.StreamHandler()
|
||||||
|
console_handler.setLevel(log_level)
|
||||||
|
console_handler.setFormatter(formatter)
|
||||||
|
|
||||||
|
# Добавляем обработчики к логгеру
|
||||||
|
logger.addHandler(file_handler)
|
||||||
|
logger.addHandler(console_handler)
|
||||||
|
|
||||||
|
# Логируем успешную настройку
|
||||||
|
logging.info("=== LOGGING SYSTEM INITIALIZED ===")
|
||||||
|
logging.info(f"Log level: {logging.getLevelName(log_level)}")
|
||||||
|
logging.info(f"Logs directory: {os.path.abspath(logs_dir)}")
|
||||||
|
logging.info(f"Log rotation: daily, keeping 30 days")
|
||||||
|
logging.info("=== LOGGING SETUP COMPLETE ===")
|
||||||
|
|
||||||
|
|
||||||
def get_us_state_name(state_code: str) -> str:
|
def get_us_state_name(state_code: str) -> str:
|
||||||
"""
|
"""
|
||||||
Конвертирует двухбуквенный код штата США в полное название
|
Конвертирует двухбуквенный код штата США в полное название
|
||||||
@ -307,13 +370,11 @@ async def send_vehicle_photos(message: Message, vin: str, photo_paths: list, mak
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
if getenv("DEBUG",'0') == '1':
|
# Настройка системы логирования
|
||||||
logging.basicConfig(level=logging.INFO)
|
setup_logging()
|
||||||
else:
|
|
||||||
logging.basicConfig(level=logging.WARNING)
|
|
||||||
|
|
||||||
# Временно включаем детальное логирование для отладки
|
# Логируем информацию о системе
|
||||||
logging.getLogger().setLevel(logging.INFO)
|
log_system_info()
|
||||||
|
|
||||||
|
|
||||||
TOKEN = getenv("BOT_TOKEN")
|
TOKEN = getenv("BOT_TOKEN")
|
||||||
@ -1541,7 +1602,6 @@ async def process_photo_vin(message: Message, state: FSMContext, db: OracleDatab
|
|||||||
|
|
||||||
|
|
||||||
async def on_startup():
|
async def on_startup():
|
||||||
log_system_info() # Логируем информацию о системе
|
|
||||||
await oracle_db.connect()
|
await oracle_db.connect()
|
||||||
# Регистрируем middleware для всех типов событий
|
# Регистрируем middleware для всех типов событий
|
||||||
dp.message.middleware(DbSessionMiddleware(oracle_db))
|
dp.message.middleware(DbSessionMiddleware(oracle_db))
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user