Source code for src.app_logging.log_setup
# log_setup.py
import logging
from logging.handlers import RotatingFileHandler
from pathlib import Path
[docs]
def setup_logging(log_file: str = "bot.log") -> logging.Logger:
"""
Sets up rotating file logging for:
- your app logs
- slack_bolt logs
- slack_sdk logs
Returns a logger you can use directly: logging.getLogger("app")
"""
log_path = Path(log_file).resolve()
log_path.parent.mkdir(parents=True, exist_ok=True)
# Root logger
root = logging.getLogger()
root.setLevel(logging.INFO)
# Avoid duplicate handlers if you restart in same interpreter/session
if not root.handlers:
handler = RotatingFileHandler(
log_path,
maxBytes=2_000_000, # 2MB
backupCount=5,
encoding="utf-8",
)
formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(name)s | %(message)s")
handler.setFormatter(formatter)
root.addHandler(handler)
# Make sure Slack libraries also log into the same file
logging.getLogger("slack_bolt").setLevel(logging.INFO)
logging.getLogger("slack_sdk").setLevel(logging.INFO)
return logging.getLogger("app")