|
|
""" |
|
|
Enhanced logging configuration - Independent module |
|
|
""" |
|
|
import logging |
|
|
import os |
|
|
from pathlib import Path |
|
|
from logging.handlers import RotatingFileHandler |
|
|
|
|
|
|
|
|
def setup_logging(): |
|
|
""" |
|
|
🔧 ENHANCED LOGGING SETUP |
|
|
""" |
|
|
logger = logging.getLogger('reasoning_system') |
|
|
|
|
|
log_level_str = os.getenv('LOG_LEVEL', 'INFO').upper() |
|
|
log_level = getattr(logging, log_level_str, logging.INFO) |
|
|
logger.setLevel(log_level) |
|
|
|
|
|
if logger.handlers: |
|
|
return logger |
|
|
|
|
|
|
|
|
console_handler = logging.StreamHandler() |
|
|
console_handler.setLevel(logging.INFO) |
|
|
console_format = logging.Formatter( |
|
|
'%(asctime)s | %(levelname)-8s | %(message)s', |
|
|
datefmt='%H:%M:%S' |
|
|
) |
|
|
console_handler.setFormatter(console_format) |
|
|
|
|
|
|
|
|
log_dir = Path('logs') |
|
|
log_dir.mkdir(exist_ok=True) |
|
|
|
|
|
file_handler = RotatingFileHandler( |
|
|
log_dir / 'reasoning_system.log', |
|
|
maxBytes=10*1024*1024, |
|
|
backupCount=5, |
|
|
encoding='utf-8' |
|
|
) |
|
|
file_handler.setLevel(logging.DEBUG) |
|
|
file_format = logging.Formatter( |
|
|
'%(asctime)s | %(levelname)-8s | %(name)s:%(lineno)d | %(message)s', |
|
|
datefmt='%Y-%m-%d %H:%M:%S' |
|
|
) |
|
|
file_handler.setFormatter(file_format) |
|
|
|
|
|
|
|
|
error_handler = RotatingFileHandler( |
|
|
log_dir / 'errors.log', |
|
|
maxBytes=5*1024*1024, |
|
|
backupCount=3, |
|
|
encoding='utf-8' |
|
|
) |
|
|
error_handler.setLevel(logging.ERROR) |
|
|
error_handler.setFormatter(file_format) |
|
|
|
|
|
logger.addHandler(console_handler) |
|
|
logger.addHandler(file_handler) |
|
|
logger.addHandler(error_handler) |
|
|
logger.propagate = False |
|
|
|
|
|
return logger |
|
|
|
|
|
|
|
|
|
|
|
logger = setup_logging() |
|
|
|