Class: ActionMCP::Logging::Level
- Inherits:
-
Object
- Object
- ActionMCP::Logging::Level
- Defined in:
- lib/action_mcp/logging/level.rb
Overview
RFC 5424 log levels for MCP logging
Constant Summary collapse
- LEVELS =
Log levels in order of severity (ascending)
{ debug: 0, info: 1, notice: 2, warning: 3, error: 4, critical: 5, alert: 6, emergency: 7 }.freeze
- LEVEL_NAMES =
Reverse mapping for converting integers back to symbols
LEVELS.invert.freeze
Class Method Summary collapse
-
.all_levels ⇒ Array<Symbol>
Get all valid level names as symbols.
-
.coerce(level) ⇒ Integer
Coerce a level to its integer value.
-
.more_severe_or_equal?(level_a, level_b) ⇒ Boolean
Check if level_a is more severe than level_b.
-
.name_for(level_int) ⇒ Symbol
Convert integer level back to symbol.
-
.valid?(level) ⇒ Boolean
Check if a level is valid.
Class Method Details
.all_levels ⇒ Array<Symbol>
Get all valid level names as symbols
70 71 72 |
# File 'lib/action_mcp/logging/level.rb', line 70 def all_levels LEVELS.keys end |
.coerce(level) ⇒ Integer
Coerce a level to its integer value
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/action_mcp/logging/level.rb', line 42 def coerce(level) case level when String, Symbol symbol_level = level.to_sym LEVELS.fetch(symbol_level) do raise ArgumentError, "Invalid log level: #{level}. Valid levels: #{LEVELS.keys.join(', ')}" end when Integer unless LEVEL_NAMES.key?(level) raise ArgumentError, "Invalid log level: #{level}. Valid levels: 0-7" end level else raise ArgumentError, "Invalid log level type: #{level.class}. Expected String, Symbol, or Integer" end end |
.more_severe_or_equal?(level_a, level_b) ⇒ Boolean
Check if level_a is more severe than level_b
78 79 80 |
# File 'lib/action_mcp/logging/level.rb', line 78 def more_severe_or_equal?(level_a, level_b) coerce(level_a) >= coerce(level_b) end |
.name_for(level_int) ⇒ Symbol
Convert integer level back to symbol
62 63 64 65 66 |
# File 'lib/action_mcp/logging/level.rb', line 62 def name_for(level_int) LEVEL_NAMES.fetch(level_int) do raise ArgumentError, "Invalid log level integer: #{level_int}" end end |
.valid?(level) ⇒ Boolean
Check if a level is valid
27 28 29 30 31 32 33 34 35 36 |
# File 'lib/action_mcp/logging/level.rb', line 27 def valid?(level) case level when String, Symbol LEVELS.key?(level.to_sym) when Integer LEVEL_NAMES.key?(level) else false end end |