Class: LogTransportManager

Inherits:
Object
  • Object
show all
Defined in:
lib/wingify/packages/logger/core/transport_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(config) ⇒ LogTransportManager

Returns a new instance of LogTransportManager.



19
20
21
22
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 19

def initialize(config)
  @transports = []
  @config = config # This should be the global config passed to LogManager
end

Instance Method Details

#add_transport(transport) ⇒ Object



24
25
26
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 24

def add_transport(transport)
  @transports.push(transport)
end

#debug(message) ⇒ Object



38
39
40
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 38

def debug(message)
  log('DEBUG', message)
end

#error(message) ⇒ Object



50
51
52
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 50

def error(message)
  log('ERROR', message)
end

#info(message) ⇒ Object



42
43
44
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 42

def info(message)
  log('INFO', message)
end

#log(level, message) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 54

def log(level, message)
  @transports.each do |transport|
    # Pass the global config (from LogManager) to LogMessageBuilder, not the transport
    log_message_builder = LogMessageBuilder.new(@config, transport)
    formatted_message = log_message_builder.format_message(level, message)
  
    if should_log?(level, transport.level)
      if transport.respond_to?(:log) && transport.method(:log).arity == 2
        # Use custom log handler if available with correct arity
        transport.log(level, message)
      elsif transport.respond_to?(level.downcase.to_sym)
        # Use level-specific method if available
        transport.send(level.downcase.to_sym, formatted_message)
      else
        # Fallback to console_log
        transport.console_log(level, formatted_message)
      end
    end
  end
end

#should_log?(transport_level, config_level) ⇒ Boolean

Returns:

  • (Boolean)


28
29
30
31
32
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 28

def should_log?(transport_level, config_level)
  target_level = LogLevelToNumber.to_number(transport_level)
  desired_level = LogLevelToNumber.to_number(config_level || @config[:level])
  target_level >= desired_level
end

#trace(message) ⇒ Object



34
35
36
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 34

def trace(message)
  log('TRACE', message)
end

#warn(message) ⇒ Object



46
47
48
# File 'lib/wingify/packages/logger/core/transport_manager.rb', line 46

def warn(message)
  log('WARN', message)
end