| import logging |
| import logging.handlers |
| import os |
| from datetime import datetime |
|
|
| def setup_logging(log_dir="logs"): |
| """Configure logging with both file and console handlers""" |
| |
| if not os.path.exists(log_dir): |
| os.makedirs(log_dir) |
| |
| |
| file_formatter = logging.Formatter( |
| '%(asctime)s - %(name)s - %(levelname)s - %(message)s' |
| ) |
| console_formatter = logging.Formatter( |
| '%(levelname)s - %(message)s' |
| ) |
| |
| |
| |
| log_file = os.path.join(log_dir, f"mcp_{datetime.now().strftime('%Y%m%d')}.log") |
| file_handler = logging.handlers.TimedRotatingFileHandler( |
| log_file, |
| when="midnight", |
| interval=1, |
| backupCount=7 |
| ) |
| file_handler.setFormatter(file_formatter) |
| file_handler.setLevel(logging.DEBUG) |
| |
| |
| console_handler = logging.StreamHandler() |
| console_handler.setFormatter(console_formatter) |
| console_handler.setLevel(logging.INFO) |
| |
| |
| root_logger = logging.getLogger() |
| root_logger.setLevel(logging.DEBUG) |
| |
| |
| root_logger.handlers = [] |
| |
| |
| root_logger.addHandler(file_handler) |
| root_logger.addHandler(console_handler) |
| |
| |
| loggers = { |
| 'server': logging.getLogger('server'), |
| 'research': logging.getLogger('research'), |
| 'synthesis': logging.getLogger('synthesis'), |
| 'client': logging.getLogger('client') |
| } |
| |
| for logger in loggers.values(): |
| logger.setLevel(logging.DEBUG) |
| |
| return loggers |