File: logger.rb

package info (click to toggle)
ruby-rack-timeout 0.7.0-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 212 kB
  • sloc: ruby: 515; makefile: 4
file content (38 lines) | stat: -rw-r--r-- 919 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
require "logger"
require_relative "core"
require_relative "logging-observer"

module Rack::Timeout::Logger
  extend self
  attr :device, :level, :logger

  def device=(new_device)
    update(new_device, level)
  end

  def level=(new_level)
    update(device, new_level)
  end

  def logger=(new_logger)
    @logger = @observer.logger = new_logger
  end

  def init
    @observer = ::Rack::Timeout::StateChangeLoggingObserver.new
    ::Rack::Timeout.register_state_change_observer(:logger, &@observer.callback)
    @inited = true
  end

  def disable
    @observer, @logger, @level, @device, @inited = nil
    ::Rack::Timeout.unregister_state_change_observer(:logger)
  end

  def update(new_device, new_level)
    init unless @inited
    @device     = new_device || $stderr
    @level      = new_level  || ::Logger::INFO
    self.logger = ::Rack::Timeout::StateChangeLoggingObserver.mk_logger(device, level)
  end
end