File size: 1,158 Bytes
164610c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 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
|