Files
wifi-gps-mapper-public/cracklab/client/client_logging.py
T
2026-10-06 21:08:12 +03:00

65 lines
1.2 KiB
Python

from __future__ import annotations
import logging
from datetime import datetime, timezone
from pathlib import Path
LOGGER_NAME = "cracklab.client"
class UTCFormatter(logging.Formatter):
converter = staticmethod(
lambda timestamp: datetime.fromtimestamp(
timestamp,
tz=timezone.utc,
).timetuple()
)
def _configure(
name: str,
log_path: Path,
) -> logging.Logger:
log_path.parent.mkdir(parents=True, exist_ok=True)
logger = logging.getLogger(name)
logger.setLevel(logging.INFO)
logger.propagate = False
if logger.handlers:
return logger
handler = logging.FileHandler(
log_path,
mode="a",
encoding="utf-8",
)
handler.setFormatter(
UTCFormatter(
"%(asctime)sZ %(levelname)s %(message)s",
datefmt="%Y-%m-%dT%H:%M:%S",
)
)
logger.addHandler(handler)
return logger
def configure_logging(log_path: Path) -> logging.Logger:
return _configure(
LOGGER_NAME,
log_path,
)
def configure_job_logging(
log_path: Path,
job_id: str,
) -> logging.Logger:
return _configure(
f"{LOGGER_NAME}.{job_id}",
log_path,
)