"""Logging configuration for SPA Telegram Bot."""
import sys
from pathlib import Path
from loguru import logger
LOG_DIR = Path(__file__).resolve().parent.parent / "logs"
LOG_DIR.mkdir(exist_ok=True)
# В контейнере можно переопределить через env (например LOG_DIR=/dev/null)
LOG_DIR = Path(__import__("os").environ.get("LOG_DIR", str(LOG_DIR)))
LOG_DIR.mkdir(exist_ok=True)
# Remove default handler
logger.remove()
# Console handler (INFO and above)
logger.add(
sys.stdout,
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
level="INFO",
colorize=True,
)
# File handler with rotation (DEBUG and above, keep 30 days)
logger.add(
LOG_DIR / "bot_{time:YYYY-MM-DD}.log",
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
level="DEBUG",
rotation="1 day",
retention="30 days",
compression="gz",
)
# Error-only file
logger.add(
LOG_DIR / "errors_{time:YYYY-MM-DD}.log",
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
level="ERROR",
rotation="1 day",
retention="90 days",
compression="gz",
)