File size: 596 Bytes
734b5b4
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from __future__ import annotations
from pathlib import Path
import json
from datetime import datetime

class LocalLogger:
    def __init__(self, log_file: Path):
        self.log_file = log_file
        self.log_file.parent.mkdir(parents=True, exist_ok=True)

    def log(self, stage: str, level: str, message: str, **extra):
        event = {"timestamp": datetime.utcnow().isoformat()+"Z",
                 "stage": stage, "level": level, "message": message, **extra}
        with self.log_file.open("a", encoding="utf-8") as f:
            f.write(json.dumps(event, ensure_ascii=False) + "\n")