Class: Rack::CommonLogger
- Defined in:
- lib/gems/rack-0.9.1/lib/rack/commonlogger.rb
Overview
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.
Instance Method Summary collapse
-
#<<(str) ⇒ Object
By default, log to rack.errors.
- #_call(env) ⇒ Object
- #call(env) ⇒ Object
- #close ⇒ Object
- #each ⇒ Object
-
#initialize(app, logger = nil) ⇒ CommonLogger
constructor
A new instance of CommonLogger.
Constructor Details
#initialize(app, logger = nil) ⇒ CommonLogger
Returns a new instance of CommonLogger.
7 8 9 10 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 7 def initialize(app, logger=nil) @app = app @logger = logger end |
Instance Method Details
#<<(str) ⇒ Object
By default, log to rack.errors.
29 30 31 32 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 29 def <<(str) @env["rack.errors"].write(str) @env["rack.errors"].flush end |
#_call(env) ⇒ Object
16 17 18 19 20 21 22 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 16 def _call(env) @env = env @logger ||= self @time = Time.now @status, @header, @body = @app.call(env) [@status, @header, self] end |
#call(env) ⇒ Object
12 13 14 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 12 def call(env) dup._call(env) end |
#close ⇒ Object
24 25 26 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 24 def close @body.close if @body.respond_to? :close end |
#each ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/gems/rack-0.9.1/lib/rack/commonlogger.rb', line 34 def each length = 0 @body.each { |part| length += part.size yield part } @now = Time.now # Common Log Format: http://httpd.apache.org/docs/1.3/logs.html#common # lilith.local - - [07/Aug/2006 23:58:02] "GET / HTTP/1.1" 500 - # %{%s - %s [%s] "%s %s%s %s" %d %s\n} % @logger << %{%s - %s [%s] "%s %s%s %s" %d %s %0.4f\n} % [ @env['HTTP_X_FORWARDED_FOR'] || @env["REMOTE_ADDR"] || "-", @env["REMOTE_USER"] || "-", @now.strftime("%d/%b/%Y %H:%M:%S"), @env["REQUEST_METHOD"], @env["PATH_INFO"], @env["QUERY_STRING"].empty? ? "" : "?"+@env["QUERY_STRING"], @env["HTTP_VERSION"], @status.to_s[0..3], (length.zero? ? "-" : length.to_s), @now - @time ] end |