class Puma::TCPLogger
def call(env, socket)
def call(env, socket) who = env[Const::REMOTE_ADDR] log who, "connected" unless @quiet env['log'] = lambda { |str| log(who, str) } begin @app.call env, socket rescue Object => e log who, "exception: #{e.message} (#{e.class})" else log who, "disconnected" unless @quiet end end
def initialize(logger, app, quiet=false)
def initialize(logger, app, quiet=false) @logger = logger @app = app @quiet = quiet end
def log(who, str)
def log(who, str) now = Time.now.strftime("%d/%b/%Y %H:%M:%S") log_str = "#{now} - #{who} - #{str}" case @logger when IO @logger.puts log_str when Events @logger.log log_str end end