Class: Puma::TCPLogger

Inherits:
Object
  • Object
show all
Defined in:
lib/puma/tcp_logger.rb

Constant Summary collapse

FORMAT =
"%s - %s"

Instance Method Summary collapse

Constructor Details

#initialize(logger, app, quiet = false) ⇒ TCPLogger

Returns a new instance of TCPLogger.


5
6
7
8
9
# File 'lib/puma/tcp_logger.rb', line 5

def initialize(logger, app, quiet=false)
  @logger = logger
  @app = app
  @quiet = quiet
end

Instance Method Details

#call(env, socket) ⇒ Object


26
27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/puma/tcp_logger.rb', line 26

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

#log(who, str) ⇒ Object


13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/puma/tcp_logger.rb', line 13

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