Sadjad Alikhani
Initial commit
164610c
from __future__ import annotations
from pathlib import Path
import logging
LOG_FORMAT = "[%(asctime)s,%(msecs)03d %(levelname)s %(name)s line %(lineno)d %(process)d] %(message)s"
DATE_FORMAT = "%Y-%m-%d %H:%M:%S"
def setup_logging(
name: str = "LWMTemporal",
log_dir: Path | None = None,
level: int = logging.INFO,
) -> logging.Logger:
"""Configure and return a logger using the original package's style."""
logger = logging.getLogger(name)
logger.setLevel(level)
# Avoid duplicating handlers when called multiple times
if logger.hasHandlers():
logger.handlers.clear()
formatter = logging.Formatter(LOG_FORMAT, DATE_FORMAT)
if log_dir is not None:
log_dir = Path(log_dir)
log_dir.mkdir(parents=True, exist_ok=True)
file_handler = logging.FileHandler(log_dir / f"{name}.log")
file_handler.setFormatter(formatter)
file_handler.setLevel(level)
logger.addHandler(file_handler)
stream_handler = logging.StreamHandler()
stream_handler.setFormatter(formatter)
stream_handler.setLevel(level)
logger.addHandler(stream_handler)
return logger