File size: 1,019 Bytes
f4481f7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import logging
from pathlib import Path
from datetime import datetime

# Global variable to store the log file path for the current run
_LOG_FILE = None

def get_logger(name: str):
    global _LOG_FILE
    
    logger = logging.getLogger(name)
    logger.setLevel(logging.INFO)

    if logger.handlers:
        return logger

    # Create log file path only once for the entire pipeline run
    if _LOG_FILE is None:
        date_dir = datetime.now().strftime("%Y-%m-%d")
        timestamp = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
        log_dir = Path("logs") / date_dir
        log_dir.mkdir(parents=True, exist_ok=True)
        _LOG_FILE = log_dir / f"{timestamp}.log"

    handler = logging.FileHandler(_LOG_FILE, encoding="utf-8")
    formatter = logging.Formatter(
        "[%(asctime)s]: %(filename)s - Line %(lineno)d: %(levelname)s: %(message)s",
        datefmt="%Y-%m-%d %H:%M:%S"
    )
    handler.setFormatter(formatter)

    logger.addHandler(handler)
    logger.propagate = False
    return logger