25 lines
781 B
Python
25 lines
781 B
Python
import logging
|
|
from pathlib import Path
|
|
|
|
|
|
def build_logger(name: str, log_level: str = "INFO", log_file: Path | None = None) -> logging.Logger:
|
|
logger = logging.getLogger(name)
|
|
logger.setLevel(getattr(logging, log_level.upper(), logging.INFO))
|
|
|
|
if logger.handlers:
|
|
return logger
|
|
|
|
formatter = logging.Formatter("%(asctime)s | %(levelname)s | %(name)s | %(message)s")
|
|
|
|
stream_handler = logging.StreamHandler()
|
|
stream_handler.setFormatter(formatter)
|
|
logger.addHandler(stream_handler)
|
|
|
|
if log_file is not None:
|
|
log_file.parent.mkdir(parents=True, exist_ok=True)
|
|
file_handler = logging.FileHandler(log_file, encoding="utf-8")
|
|
file_handler.setFormatter(formatter)
|
|
logger.addHandler(file_handler)
|
|
|
|
return logger
|