Files
ecm_sync_system/sync_state_machine/config/logging_config.py
T
strepsiades 4a9c444b10 first commit
2026-03-09 16:31:42 +08:00

31 lines
877 B
Python

from datetime import datetime
from pathlib import Path
from typing import Optional
from pydantic import BaseModel, ConfigDict
class LoggingConfig(BaseModel):
model_config = ConfigDict(extra="forbid", validate_assignment=True)
initialize: bool = True
file_path: Optional[str] = None
file_dir: Optional[str] = None
file_name_pattern: Optional[str] = None
level: int = 20
suppress_node_logs: bool = True
def resolve_log_file_path(cfg: LoggingConfig) -> Optional[str]:
if cfg.file_path:
return cfg.file_path
if not cfg.file_dir:
return None
pattern = cfg.file_name_pattern or "pipeline_{timestamp}.log"
ts = datetime.now().strftime("%Y%m%d_%H%M%S")
filename = pattern.replace("{timestamp}", ts)
log_dir = Path(cfg.file_dir)
log_dir.mkdir(parents=True, exist_ok=True)
return str(log_dir / filename)