Skip to main content
Glama
logger.pyβ€’1.75 kB
""" Logging utility using Loguru """ import sys from pathlib import Path from loguru import logger from typing import Optional def setup_logger( log_level: str = "INFO", log_dir: str = "logs", log_file: str = "mcp_server.log", rotation: str = "10 MB", retention: str = "1 week" ) -> None: """ Setup loguru logger with file and console output Args: log_level: Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) log_dir: Directory to store log files log_file: Log file name rotation: When to rotate log file retention: How long to keep old logs """ # Remove default handler logger.remove() # Create log directory log_path = Path(log_dir) log_path.mkdir(parents=True, exist_ok=True) # Console handler with colors logger.add( sys.stderr, format="<green>{time:YYYY-MM-DD HH:mm:ss}</green> | <level>{level: <8}</level> | <cyan>{name}</cyan>:<cyan>{function}</cyan>:<cyan>{line}</cyan> - <level>{message}</level>", level=log_level, colorize=True ) # File handler logger.add( log_path / log_file, format="{time:YYYY-MM-DD HH:mm:ss} | {level: <8} | {name}:{function}:{line} - {message}", level=log_level, rotation=rotation, retention=retention, compression="zip" ) logger.info(f"Logger initialized with level {log_level}") logger.info(f"Logs will be saved to {log_path / log_file}") def get_logger(name: Optional[str] = None): """ Get a logger instance Args: name: Optional name for the logger context Returns: Logger instance """ if name: return logger.bind(context=name) return logger

Latest Blog Posts

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/jaskirat1616/fusion360-mcp'

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