Class: ModelContextProtocol::Server::MCPLogger

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/model_context_protocol/server/mcp_logger.rb

Constant Summary collapse

LEVEL_MAP =
{
  "debug" => Logger::DEBUG,
  "info" => Logger::INFO,
  "notice" => Logger::INFO,
  "warning" => Logger::WARN,
  "error" => Logger::ERROR,
  "critical" => Logger::FATAL,
  "alert" => Logger::FATAL,
  "emergency" => Logger::UNKNOWN
}.freeze
REVERSE_LEVEL_MAP =
{
  Logger::DEBUG => "debug",
  Logger::INFO => "info",
  Logger::WARN => "warning",
  Logger::ERROR => "error",
  Logger::FATAL => "critical",
  Logger::UNKNOWN => "emergency"
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(logger_name: "server", level: "info", enabled: true) ⇒ MCPLogger

Returns a new instance of MCPLogger.



34
35
36
37
38
39
40
41
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 34

def initialize(logger_name: "server", level: "info", enabled: true)
  @logger_name = logger_name
  @enabled = enabled
  @internal_logger = Logger.new(nil)
  @internal_logger.level = LEVEL_MAP[level] || Logger::INFO
  @transport = nil
  @queued_messages = []
end

Instance Attribute Details

#enabledObject (readonly)

Returns the value of attribute enabled.



32
33
34
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 32

def enabled
  @enabled
end

#logger_nameObject (readonly)

Returns the value of attribute logger_name.



32
33
34
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 32

def logger_name
  @logger_name
end

#transportObject

Returns the value of attribute transport.



31
32
33
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 31

def transport
  @transport
end

Instance Method Details

#add(severity, message = nil, data = {}, &block) ⇒ Object



50
51
52
53
54
55
56
57
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 50

def add(severity, message = nil, data = {}, &block)
  return true unless @enabled
  return true if severity < @internal_logger.level

  message = block.call if message.nil? && block_given?
  send_notification(severity, message, data)
  true
end

#connect_transport(transport) ⇒ Object



71
72
73
74
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 71

def connect_transport(transport)
  @transport = transport
  flush_queued_messages if @enabled
end

#levelObject



63
64
65
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 63

def level
  @internal_logger.level
end

#level=(value) ⇒ Object



59
60
61
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 59

def level=(value)
  @internal_logger.level = value
end

#set_mcp_level(mcp_level) ⇒ Object



67
68
69
# File 'lib/model_context_protocol/server/mcp_logger.rb', line 67

def set_mcp_level(mcp_level)
  self.level = LEVEL_MAP[mcp_level] || Logger::INFO
end