| 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) |
|
|
| |
| 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 |
|
|
|
|