Files
bak-and-rest/src/bakrest/logging_setup.py

35 lines
1023 B
Python

from __future__ import annotations
import logging
from datetime import date
from pathlib import Path
def configure_logging(logs_dir: Path, component: str) -> logging.Logger:
logs_dir.mkdir(parents=True, exist_ok=True)
logger = logging.getLogger(f"bakrest.{component}")
logger.setLevel(logging.INFO)
logger.handlers.clear()
log_path = logs_dir / f"{date.today().isoformat()}-{component}.log"
formatter = logging.Formatter(
"%(asctime)s %(levelname)s [%(name)s] %(message)s",
datefmt="%Y-%m-%d %H:%M:%S",
)
file_handler = logging.FileHandler(log_path, encoding="utf-8")
file_handler.setFormatter(formatter)
logger.addHandler(file_handler)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
logger.addHandler(stream_handler)
return logger
def close_logger(logger: logging.Logger) -> None:
for handler in list(logger.handlers):
handler.flush()
handler.close()
logger.removeHandler(handler)