"""Structured logging for OPC system."""
from __future__ import annotations
import sys
from pathlib import Path
from loguru import logger
def setup_logging(log_dir: Path | None = None, level: str = "INFO") -> None:
"""Configure loguru for OPC with file + console output."""
logger.remove()
logger.add(
sys.stderr,
level=level,
format="{time:HH:mm:ss} | {level: <8} | {name} - {message}",
colorize=True,
)
if log_dir:
from datetime import date
day_dir = log_dir / date.today().isoformat()
day_dir.mkdir(parents=True, exist_ok=True)
logger.add(
str(day_dir / "opc.log"),
level="DEBUG",
format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}",
rotation="50 MB",
retention="30 days",
)