first commit
This commit is contained in:
@@ -0,0 +1,30 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user