Class: Mnemonic::LoggerProxy

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/mnemonic/logger_proxy.rb

Instance Method Summary collapse

Constructor Details

#initialize(logger, mnemonic = Mnemonic.new(&proc)) ⇒ LoggerProxy

Returns a new instance of LoggerProxy.



9
10
11
12
13
14
15
# File 'lib/mnemonic/logger_proxy.rb', line 9

def initialize(logger, mnemonic = Mnemonic.new(&proc))
  super()
  @monitor = Monitor.new
  @logger = logger
  @mnemonic = mnemonic
  enable_mnemonic!
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method_name, *args, &block) ⇒ Object



79
80
81
82
83
84
85
# File 'lib/mnemonic/logger_proxy.rb', line 79

def method_missing(method_name, *args, &block)
  if @logger.respond_to? method_name
    @logger.send(method_name, *args, &block)
  else
    super
  end
end

Instance Method Details

#<<(msg) ⇒ Object



66
67
68
69
70
# File 'lib/mnemonic/logger_proxy.rb', line 66

def <<(msg)
  @monitor.synchronize do
    @logger << msg
  end
end

#add(severity, message = nil, progname = nil, &block) ⇒ Object Also known as: log



57
58
59
60
61
62
63
# File 'lib/mnemonic/logger_proxy.rb', line 57

def add(severity, message = nil, progname = nil, &block)
  @monitor.synchronize do
    @logger.add(severity, message, progname, &block).tap do |result|
      @mnemonic.trigger! if result && @sink && severity >= @logger.level
    end
  end
end

#closeObject



72
73
74
75
76
77
# File 'lib/mnemonic/logger_proxy.rb', line 72

def close
  @monitor.synchronize do
    disable_mnemonic!
    @logger.close
  end
end

#disable_mnemonic!Object



23
24
25
26
27
28
# File 'lib/mnemonic/logger_proxy.rb', line 23

def disable_mnemonic!
  @monitor.synchronize do
    @mnemonic.detach(@sink)
    @sink = nil
  end
end

#enable_mnemonic!Object



17
18
19
20
21
# File 'lib/mnemonic/logger_proxy.rb', line 17

def enable_mnemonic!
  @monitor.synchronize do
    @sink = @mnemonic.attach_pretty(@logger)
  end
end

#mnemonic_enabled?Boolean

Returns:

  • (Boolean)


30
31
32
# File 'lib/mnemonic/logger_proxy.rb', line 30

def mnemonic_enabled?
  @monitor.synchronize { !!@sink }
end

#respond_to?(method_name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/mnemonic/logger_proxy.rb', line 87

def respond_to?(method_name, include_private = false)
  @logger.respond_to?(method_name) || super
end