# Created on savesnippets.com · https://savesnippets.com/na7CHaThh9RgY5 import logging from logging.handlers import RotatingFileHandler from pathlib import Path def setup_logging(log_dir: str = "logs", level: int = logging.INFO) -> None: Path(log_dir).mkdir(parents=True, exist_ok=True) fmt = logging.Formatter( "%(asctime)s %(levelname)-7s [%(name)s] %(message)s", datefmt="%Y-%m-%dT%H:%M:%S", ) root = logging.getLogger() root.setLevel(logging.DEBUG) # File: everything, rotated at 5 MB × 3 backups fh = RotatingFileHandler(f"{log_dir}/app.log", maxBytes=5_000_000, backupCount=3) fh.setFormatter(fmt); fh.setLevel(logging.DEBUG); root.addHandler(fh) # Console: INFO and up only ch = logging.StreamHandler() ch.setFormatter(fmt); ch.setLevel(level); root.addHandler(ch) setup_logging(level=logging.INFO) log = logging.getLogger("myapp.startup") log.info("Service started on port %d", 8080) log.debug("This goes to file only")