Skip to main content
Glama

CFM Tips - Cost Optimization MCP Server

by aws-samples
logging_config.py4.04 kB
""" Centralized logging configuration for CFM Tips MCP Server """ import logging import sys import os import tempfile from datetime import datetime def setup_logging(): """Configure comprehensive logging for the application.""" # Create formatter formatter = logging.Formatter( '%(asctime)s - %(name)s - %(levelname)s - %(funcName)s:%(lineno)d - %(message)s' ) # Configure root logger root_logger = logging.getLogger() root_logger.setLevel(logging.INFO) # Remove existing handlers for handler in root_logger.handlers[:]: root_logger.removeHandler(handler) # Add file handlers try: # Try to create logs directory if it doesn't exist log_dir = 'logs' if not os.path.exists(log_dir): os.makedirs(log_dir, exist_ok=True) # Try main log file in logs directory first log_file = os.path.join(log_dir, 'cfm_tips_mcp.log') file_handler = logging.FileHandler(log_file) file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) # Try error log file error_file = os.path.join(log_dir, 'cfm_tips_mcp_errors.log') error_handler = logging.FileHandler(error_file) error_handler.setLevel(logging.ERROR) error_handler.setFormatter(formatter) root_logger.addHandler(error_handler) except (OSError, PermissionError) as e: # If we can't write to logs directory, try current directory try: file_handler = logging.FileHandler('cfm_tips_mcp.log') file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) error_handler = logging.FileHandler('cfm_tips_mcp_errors.log') error_handler.setLevel(logging.ERROR) error_handler.setFormatter(formatter) root_logger.addHandler(error_handler) except (OSError, PermissionError): # If we can't write anywhere, try temp directory try: temp_dir = tempfile.gettempdir() temp_log = os.path.join(temp_dir, 'cfm_tips_mcp.log') file_handler = logging.FileHandler(temp_log) file_handler.setLevel(logging.INFO) file_handler.setFormatter(formatter) root_logger.addHandler(file_handler) temp_error = os.path.join(temp_dir, 'cfm_tips_mcp_errors.log') error_handler = logging.FileHandler(temp_error) error_handler.setLevel(logging.ERROR) error_handler.setFormatter(formatter) root_logger.addHandler(error_handler) # Log where we're writing files print(f"Warning: Using temp directory for logs: {temp_dir}") except (OSError, PermissionError): # If all else fails, raise error since we need file logging raise RuntimeError("Could not create log files in any location") return logging.getLogger(__name__) def log_function_entry(logger, func_name, **kwargs): """Log function entry with parameters.""" logger.info(f"Entering {func_name} with params: {kwargs}") def log_function_exit(logger, func_name, result_status=None, execution_time=None): """Log function exit with results.""" msg = f"Exiting {func_name}" if result_status: msg += f" - Status: {result_status}" if execution_time: msg += f" - Time: {execution_time:.2f}s" logger.info(msg) def log_aws_api_call(logger, service, operation, **params): """Log AWS API calls.""" logger.info(f"AWS API Call: {service}.{operation} with params: {params}") def log_aws_api_error(logger, service, operation, error): """Log AWS API errors.""" logger.error(f"AWS API Error: {service}.{operation} - {str(error)}")

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aws-samples/sample-cfm-tips-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server