| Class | Rack::CommonLogger |
| In: |
lib/rack/commonlogger.rb
|
| Parent: | Object |
Rack::CommonLogger forwards every request to an app given, and logs a line in the Apache common log format to the logger, or rack.errors by default.
# File lib/rack/commonlogger.rb, line 7
7: def initialize(app, logger=nil)
8: @app = app
9: @logger = logger
10: end
By default, log to rack.errors.
# File lib/rack/commonlogger.rb, line 25
25: def <<(str)
26: @env["rack.errors"].write(str)
27: @env["rack.errors"].flush
28: end
# File lib/rack/commonlogger.rb, line 16
16: def _call(env)
17: @env = env
18: @logger ||= self
19: @time = Time.now
20: @status, @header, @body = @app.call(env)
21: [@status, @header, self]
22: end
# File lib/rack/commonlogger.rb, line 30
30: def each
31: length = 0
32: @body.each { |part|
33: length += part.size
34: yield part
35: }
36:
37: @now = Time.now
38:
39: # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common
40: # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 -
41: # %{%s - %s [%s] "%s %s%s %s" %d %s\n} %
42: @logger << %{%s - %s [%s] "%s %s%s %s" %d %s %0.4f\n} %
43: [@env["REMOTE_ADDR"] || "-",
44: @env["REMOTE_USER"] || "-",
45: @now.strftime("%d/%b/%Y %H:%M:%S"),
46: @env["REQUEST_METHOD"],
47: @env["PATH_INFO"],
48: @env["QUERY_STRING"].empty? ? "" : "?"+@env["QUERY_STRING"],
49: @env["HTTP_VERSION"],
50: @status.to_s[0..3],
51: (length.zero? ? "-" : length.to_s),
52: @now - @time
53: ]
54: end