Spaces:
Sleeping
Sleeping
| 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") | |