Files

38 lines
1.0 KiB
Python
Raw Permalink Normal View History

2026-01-18 23:01:03 +13:00
import logging
2026-04-18 07:51:16 +12:00
from pathlib import Path
2026-01-18 23:01:03 +13:00
from typing import Optional
DEFAULT_LOG_FORMAT = "%(asctime)s - %(levelname)s - %(message)s"
2026-04-18 07:51:16 +12:00
DEFAULT_LOG_PATH = Path(__file__).resolve().parent.parent / "sublogue.log"
2026-01-18 23:01:03 +13:00
2026-04-18 07:51:16 +12:00
def configure_logging(
level: int = logging.INFO,
fmt: str = DEFAULT_LOG_FORMAT,
log_path: Path = DEFAULT_LOG_PATH,
) -> None:
"""Configure console and root-level file logging for the application."""
root_logger = logging.getLogger()
if getattr(root_logger, "_sublogue_logging_configured", False):
return
formatter = logging.Formatter(fmt)
handlers = [
logging.StreamHandler(),
logging.FileHandler(log_path, encoding="utf-8"),
]
for handler in handlers:
handler.setFormatter(formatter)
root_logger.addHandler(handler)
root_logger.setLevel(level)
root_logger._sublogue_logging_configured = True
2026-01-18 23:01:03 +13:00
def get_logger(name: Optional[str] = None) -> logging.Logger:
"""Get a logger by name."""
return logging.getLogger(name or __name__)