Class: ActionMCP::Logging::State

Inherits:
Object
  • Object
show all
Defined in:
lib/action_mcp/logging/state.rb

Overview

Thread-safe global state for MCP logging

Instance Method Summary collapse

Constructor Details

#initializeState

Initialize with default values



10
11
12
13
# File 'lib/action_mcp/logging/state.rb', line 10

def initialize
  @enabled = Concurrent::AtomicBoolean.new(false)
  @global_level = Concurrent::AtomicFixnum.new(Level::LEVELS[:warning])
end

Instance Method Details

#disable!Boolean

Disable logging

Returns:

  • (Boolean)

    false (new value)



29
30
31
# File 'lib/action_mcp/logging/state.rb', line 29

def disable!
  @enabled.make_false
end

#enable!Boolean

Enable logging

Returns:

  • (Boolean)

    true (new value)



23
24
25
# File 'lib/action_mcp/logging/state.rb', line 23

def enable!
  @enabled.make_true
end

#enabled=(value) ⇒ Boolean

Set enabled state

Parameters:

  • value (Boolean)

    true to enable, false to disable

Returns:

  • (Boolean)

    the new value



36
37
38
39
40
41
42
# File 'lib/action_mcp/logging/state.rb', line 36

def enabled=(value)
  if value
    enable!
  else
    disable!
  end
end

#enabled?Boolean

Check if logging is enabled

Returns:

  • (Boolean)

    true if enabled, false otherwise



17
18
19
# File 'lib/action_mcp/logging/state.rb', line 17

def enabled?
  @enabled.value
end

#levelInteger

Get current minimum log level as integer

Returns:

  • (Integer)

    the current level (0-7)



46
47
48
# File 'lib/action_mcp/logging/state.rb', line 46

def level
  @global_level.value
end

#level=(new_level) ⇒ Integer

Set minimum log level

Parameters:

  • new_level (String, Symbol, Integer)

    the new level

Returns:

  • (Integer)

    the new level as integer



59
60
61
62
63
# File 'lib/action_mcp/logging/state.rb', line 59

def level=(new_level)
  level_int = Level.coerce(new_level)
  @global_level.value = level_int
  level_int
end

#level_symbolSymbol

Get current minimum log level as symbol

Returns:

  • (Symbol)

    the current level symbol



52
53
54
# File 'lib/action_mcp/logging/state.rb', line 52

def level_symbol
  Level.name_for(@global_level.value)
end

#reset!void

This method returns an undefined value.

Reset to initial state (for testing)



77
78
79
80
# File 'lib/action_mcp/logging/state.rb', line 77

def reset!
  disable!
  self.level = :warning
end

#should_log?(message_level) ⇒ Boolean

Check if a message at the given level should be logged

Parameters:

  • message_level (String, Symbol, Integer)

    the message level

Returns:

  • (Boolean)

    true if should be logged, false otherwise



68
69
70
71
72
73
# File 'lib/action_mcp/logging/state.rb', line 68

def should_log?(message_level)
  return false unless enabled?

  message_level_int = Level.coerce(message_level)
  message_level_int >= @global_level.value
end