class Rack::Timeout::StateChangeLoggingObserver
Constants
- SIMPLE_FORMATTER
- STATE_LOG_LEVEL
Attributes
logger[W]
Public Class Methods
mk_logger(device, level = ::Logger::INFO)
click to toggle source
# File lib/rack/timeout/logging-observer.rb, line 21 def self.mk_logger(device, level = ::Logger::INFO) ::Logger.new(device).tap do |logger| logger.level = level logger.formatter = SIMPLE_FORMATTER end end
new()
click to toggle source
# File lib/rack/timeout/logging-observer.rb, line 11 def initialize @logger = nil end
Public Instance Methods
callback()
click to toggle source
returns the Proc to be used as the observer callback block
# File lib/rack/timeout/logging-observer.rb, line 16 def callback method(:log_state_change) end
Private Instance Methods
log_state_change(env)
click to toggle source
generates the actual log string
# File lib/rack/timeout/logging-observer.rb, line 42 def log_state_change(env) info = env[::Rack::Timeout::ENV_INFO_KEY] level = STATE_LOG_LEVEL[info.state] logger(env).send(level) do s = +"source=rack-timeout" s << " id=" << info.id if info.id s << " wait=" << info.ms(:wait) if info.wait s << " timeout=" << info.ms(:timeout) if info.timeout s << " service=" << info.ms(:service) if info.service s << " term_on_timeout=" << info.term.to_s if info.term s << " state=" << info.state.to_s if info.state s end end
logger(env = nil)
click to toggle source
# File lib/rack/timeout/logging-observer.rb, line 33 def logger(env = nil) @logger || (defined?(::Rails) && ::Rails.respond_to?(:logger) && ::Rails.logger) || (env && !env["rack.logger"].is_a?(::Rack::NullLogger) && env["rack.logger"]) || (env && env["rack.errors"] && self.class.mk_logger(env["rack.errors"])) || (@fallback_logger ||= self.class.mk_logger($stderr)) end