|
@@ -1,4 +1,6 @@
|
|
import logging
|
|
import logging
|
|
|
|
+import yaml
|
|
|
|
+import os
|
|
from colorama import Fore, Style
|
|
from colorama import Fore, Style
|
|
import colorama
|
|
import colorama
|
|
colorama.init()
|
|
colorama.init()
|
|
@@ -22,29 +24,49 @@ class ColoredFormatter(logging.Formatter):
|
|
record.msg = original_msg
|
|
record.msg = original_msg
|
|
|
|
|
|
return formatted_message
|
|
return formatted_message
|
|
-
|
|
|
|
-# Configure logger
|
|
|
|
-logger = logging.getLogger('repo_sync')
|
|
|
|
-logger.setLevel(logging.INFO)
|
|
|
|
-
|
|
|
|
-# Create console handler
|
|
|
|
-console_handler = logging.StreamHandler()
|
|
|
|
-console_handler.setLevel(logging.INFO)
|
|
|
|
-
|
|
|
|
-# Create file handler
|
|
|
|
-file_handler = logging.FileHandler('repo_sync.log')
|
|
|
|
-file_handler.setLevel(logging.INFO)
|
|
|
|
|
|
|
|
-# Use the custom colored formatter
|
|
|
|
-console_formatter = ColoredFormatter('%(asctime)s - %(levelname)s - %(message)s')
|
|
|
|
-console_handler.setFormatter(console_formatter)
|
|
|
|
|
|
+def load_config():
|
|
|
|
+ config_path = os.path.join(os.path.dirname(os.path.dirname(os.path.dirname(__file__))), 'config.yml')
|
|
|
|
+ with open(config_path, 'r') as f:
|
|
|
|
+ return yaml.safe_load(f)
|
|
|
|
|
|
-file_formatter = logging.Formatter('%(asctime)s - %(levelname)s - %(message)s')
|
|
|
|
-file_handler.setFormatter(file_formatter)
|
|
|
|
|
|
+def setup_logger():
|
|
|
|
+ config = load_config()
|
|
|
|
+ log_config = config.get('log', {})
|
|
|
|
+
|
|
|
|
+ # Configure logger
|
|
|
|
+ logger = logging.getLogger('repo_sync')
|
|
|
|
+ logger.setLevel(getattr(logging, log_config.get('level', 'INFO').upper()))
|
|
|
|
+
|
|
|
|
+ # Create console handler
|
|
|
|
+ console_handler = logging.StreamHandler()
|
|
|
|
+ console_handler.setLevel(getattr(logging, log_config.get('console_formatter', {}).get('level', 'INFO').upper()))
|
|
|
|
+
|
|
|
|
+ # Create file handler with rotation
|
|
|
|
+ from logging.handlers import RotatingFileHandler
|
|
|
|
+ file_handler = RotatingFileHandler(
|
|
|
|
+ log_config.get('file', 'repo_sync.log'),
|
|
|
|
+ maxBytes=log_config.get('max_size', 100 * 1024 * 1024), # Default 100MB
|
|
|
|
+ backupCount=log_config.get('max_backups', 3)
|
|
|
|
+ )
|
|
|
|
+ file_handler.setLevel(getattr(logging, log_config.get('file_formatter', {}).get('level', 'INFO').upper()))
|
|
|
|
+
|
|
|
|
+ # Use the custom colored formatter for console
|
|
|
|
+ console_formatter = ColoredFormatter(log_config.get('console_formatter', {}).get('format', '%(asctime)s - %(levelname)s - %(message)s'))
|
|
|
|
+ console_handler.setFormatter(console_formatter)
|
|
|
|
+
|
|
|
|
+ # Use standard formatter for file
|
|
|
|
+ file_formatter = logging.Formatter(log_config.get('file_formatter', {}).get('format', '%(asctime)s - %(levelname)s - %(message)s'))
|
|
|
|
+ file_handler.setFormatter(file_formatter)
|
|
|
|
+
|
|
|
|
+ # Add handlers to logger
|
|
|
|
+ logger.addHandler(console_handler)
|
|
|
|
+ logger.addHandler(file_handler)
|
|
|
|
+
|
|
|
|
+ return logger
|
|
|
|
|
|
-# Add handler to logger
|
|
|
|
-logger.addHandler(console_handler)
|
|
|
|
-logger.addHandler(file_handler)
|
|
|
|
|
|
+# Initialize logger
|
|
|
|
+logger = setup_logger()
|
|
|
|
|
|
# Export logger
|
|
# Export logger
|
|
__all__ = ['logger']
|
|
__all__ = ['logger']
|