File size: 2,548 Bytes
01d5a5d
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
import os
import sys
import logging
import logging.config
import logging.handlers
import datetime
import shutil

# Get project root directory
PROJECT_ROOT = os.path.abspath(os.path.join(os.path.dirname(__file__), "../.."))

# Define log directories
LOG_BASE_DIR = os.path.join(PROJECT_ROOT, "logs")
TRAIN_LOG_DIR = os.path.join(LOG_BASE_DIR, "train")

# Define log file paths
APP_LOG_FILE = os.path.join(LOG_BASE_DIR, "app.log")
TRAIN_LOG_FILE = os.path.join(TRAIN_LOG_DIR, "train.log")

# Function to rename log file if it exists
def rename_existing_log_file():
    if os.path.exists(TRAIN_LOG_FILE):
        timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        backup_filename = f"train_{timestamp}.log"
        backup_path = os.path.join(TRAIN_LOG_DIR, backup_filename)
        
        shutil.move(TRAIN_LOG_FILE, backup_path)
        print(f"Existing train.log renamed to {backup_filename}")
        return True
    return False

LOGGING_CONFIG = {
    "version": 1,
    "disable_existing_loggers": False,
    "formatters": {
        "standard": {
            "format": "%(asctime)s [%(levelname)s] %(filename)s:%(lineno)d - %(message)s",
            "datefmt": "%Y-%m-%d %H:%M:%S",
        }
    },
    "handlers": {
        "console": {
            "class": "logging.StreamHandler",
            "level": "INFO",
            "formatter": "standard",
            "stream": sys.stdout,
        },
        "file": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "INFO",
            "formatter": "standard",
            "filename": APP_LOG_FILE,
            "maxBytes": 10485760,  # 10MB
            "backupCount": 5,
            "encoding": "utf-8",
        },
        "train_process_file": {
            "class": "logging.handlers.RotatingFileHandler",
            "level": "INFO",
            "formatter": "standard",
            "filename": TRAIN_LOG_FILE,
            "maxBytes": 10485760,  # 10MB
            "backupCount": 5,
            "encoding": "utf-8",
        },
    },
    "loggers": {
        "train_process": {
            "level": "INFO",
            "handlers": ["train_process_file", "console"],
            "propagate": False,
        },
    },
    "root": {  # root logger configuration
        "level": "INFO",
        "handlers": ["console", "file"],
    },
}

# Initialize logging configuration
def setup_logging():
    logging.config.dictConfig(LOGGING_CONFIG)

# Get train process logger
def get_train_process_logger():
    return logging.getLogger("train_process")