|
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 |