diff options
author | Eric Wong <normalperson@yhbt.net> | 2009-08-29 13:35:22 -0700 |
---|---|---|
committer | Eric Wong <normalperson@yhbt.net> | 2009-08-29 13:35:22 -0700 |
commit | c03045ecde0f3270d7458ba7ac0d76a25afc6fb2 (patch) | |
tree | 7ce6c2d567fc013f0bcbbebef4b663c851b293d7 /lib | |
parent | 46a176a741ad4d19d81946b4232c0c26fb8bdbc8 (diff) | |
download | clogger-c03045ecde0f3270d7458ba7ac0d76a25afc6fb2.tar.gz |
This was documented in the README but never implemented. Some popular web servers set REQUEST_URI even though it's not required by Rack, so allow this variable to be used if possible. As a side effect, it is also less likely to be modified by certain handlers (*cough*Rails::Rack::Static*cough*).
Diffstat (limited to 'lib')
-rw-r--r-- | lib/clogger.rb | 1 | ||||
-rw-r--r-- | lib/clogger/pure.rb | 11 |
2 files changed, 11 insertions, 1 deletions
diff --git a/lib/clogger.rb b/lib/clogger.rb index 0e4148e..8e881c2 100644 --- a/lib/clogger.rb +++ b/lib/clogger.rb @@ -29,6 +29,7 @@ class Clogger :response_length => 4, # like body_bytes_sent, except "-" instead of "0" :ip => 5, # HTTP_X_FORWARDED_FOR || REMOTE_ADDR || - :pid => 6, # getpid() + :request_uri => 7 } private diff --git a/lib/clogger/pure.rb b/lib/clogger/pure.rb index 11c03f4..85c6777 100644 --- a/lib/clogger/pure.rb +++ b/lib/clogger/pure.rb @@ -63,6 +63,13 @@ private SPECIAL_RMAP = SPECIAL_VARS.inject([]) { |ary, (k,v)| ary[v] = k; ary } + def request_uri(env) + ru = env['REQUEST_URI'] and return byte_xs(ru) + qs = env['QUERY_STRING'] + qs.empty? or qs = "?#{byte_xs(qs)}" + "#{byte_xs(env['PATH_INFO'])}#{qs}" + end + def special_var(special_nr, env, status, headers) case SPECIAL_RMAP[special_nr] when :body_bytes_sent @@ -74,8 +81,10 @@ private qs = env['QUERY_STRING'] qs.empty? or qs = "?#{byte_xs(qs)}" "#{env['REQUEST_METHOD']} " \ - "#{byte_xs(env['PATH_INFO'])}#{qs} " \ + "#{request_uri(env)} " \ "#{byte_xs(env['HTTP_VERSION'])}" + when :request_uri + request_uri(env) when :request_length env['rack.input'].size.to_s when :response_length |