Files
bdbot/bot/logger.py
2026-01-28 15:53:27 +03:00

48 lines
1.4 KiB
Python

"""Logging configuration for the bot."""
import logging
import sys
from typing import Optional
def setup_logging(level: Optional[str] = None) -> None:
"""Setup logging configuration for the bot.
Args:
level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL)
If None, defaults to INFO
"""
log_level = getattr(logging, level.upper() if level else "INFO", logging.INFO)
# Create formatter
formatter = logging.Formatter(
fmt='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
datefmt='%Y-%m-%d %H:%M:%S'
)
# Create console handler (for Docker stdout/stderr)
console_handler = logging.StreamHandler(sys.stdout)
console_handler.setFormatter(formatter)
console_handler.setLevel(log_level)
# Configure root logger
root_logger = logging.getLogger()
root_logger.setLevel(log_level)
root_logger.addHandler(console_handler)
# Set specific loggers
logging.getLogger("telebot").setLevel(logging.WARNING) # Reduce telebot verbosity
logging.getLogger("apscheduler").setLevel(logging.INFO)
logging.getLogger("sqlalchemy.engine").setLevel(logging.WARNING) # Reduce SQLAlchemy verbosity
def get_logger(name: str) -> logging.Logger:
"""Get a logger instance for a module.
Args:
name: Logger name (usually __name__)
Returns:
Logger instance
"""
return logging.getLogger(name)