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