Source code for zscaler_mcp.common.logging
"""
Logging configuration for Zscaler Integrations MCP Server
This module provides logging utilities for the Zscaler Integrations MCP Server.
"""
import logging
import sys
from typing import Optional
[docs]
def configure_logging(
debug: bool = False, name: str = "zscaler_mcp", use_stderr: bool = False
) -> logging.Logger:
"""Configure logging for the Zscaler Integrations MCP Server.
Args:
debug: Enable debug logging
name: Logger name
use_stderr: Use stderr for logging (recommended for stdio transport)
Returns:
logging.Logger: Configured logger
"""
log_level = logging.DEBUG if debug else logging.INFO
# Use stderr for logging to avoid interfering with MCP protocol on stdout
stream = sys.stderr if use_stderr else sys.stdout
# Configure root logger
logging.basicConfig(
level=log_level,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
handlers=[logging.StreamHandler(stream)],
)
# Set third-party loggers to a higher level to reduce noise
logging.getLogger("urllib3").setLevel(logging.WARNING)
logging.getLogger("requests").setLevel(logging.WARNING)
# Get and return the logger for this application
logger = logging.getLogger(name)
logger.setLevel(log_level)
return logger
[docs]
def get_logger(name: Optional[str] = None) -> logging.Logger:
"""Get a logger with the specified name.
Args:
name: Logger name (defaults to "zscaler_mcp")
Returns:
logging.Logger: Logger instance
"""
logger_name = name if name else "zscaler_mcp"
return logging.getLogger(logger_name)
[docs]
def log_security_warning(title: str, details: list[str]) -> None:
"""Log a prominent security warning banner.
Used across modules (server.py, auth.py) to display standardized
security warnings when protective features are disabled.
"""
_logger = get_logger("zscaler_mcp.security")
_logger.warning("=" * 72)
_logger.warning(" SECURITY WARNING: %s", title)
_logger.warning("")
for line in details:
_logger.warning(" %s", line)
_logger.warning("=" * 72)