diff options
| author | Erol Fornoles <erol.fornoles@gmail.com> | 2016-05-11 15:46:15 +0800 |
|---|---|---|
| committer | Jeremy Evans <code@jeremyevans.net> | 2020-01-27 09:14:16 -0800 |
| commit | a5fc97bdfc3e92dc5539ffd2a19b5adc8f6601a0 (patch) | |
| tree | 01fb772852fb9ffbd829aabe1be0b2be0b00cc1b | |
| parent | a7202b0aea974234e16c7bc5991ff6fb30ddd99f (diff) | |
| download | rack-a5fc97bdfc3e92dc5539ffd2a19b5adc8f6601a0.tar.gz | |
Rack::CommonLogger should use SCRIPT_NAME + PATH_INFO when logging request paths
| -rw-r--r-- | lib/rack/common_logger.rb | 6 | ||||
| -rw-r--r-- | test/spec_common_logger.rb | 16 |
2 files changed, 21 insertions, 1 deletions
diff --git a/lib/rack/common_logger.rb b/lib/rack/common_logger.rb index a513ff6e..3a062474 100644 --- a/lib/rack/common_logger.rb +++ b/lib/rack/common_logger.rb @@ -48,7 +48,7 @@ module Rack env["REMOTE_USER"] || "-", Time.now.strftime("%d/%b/%Y:%H:%M:%S %z"), env[REQUEST_METHOD], - env[PATH_INFO], + path(env), env[QUERY_STRING].empty? ? "" : "?#{env[QUERY_STRING]}", env[SERVER_PROTOCOL], status.to_s[0..3], @@ -65,6 +65,10 @@ module Rack end end + def path(env) + env[SCRIPT_NAME] + env[PATH_INFO] + end + def extract_content_length(headers) value = headers[CONTENT_LENGTH] !value || value.to_s == '0' ? '-' : value diff --git a/test/spec_common_logger.rb b/test/spec_common_logger.rb index fdb7f312..b88ef009 100644 --- a/test/spec_common_logger.rb +++ b/test/spec_common_logger.rb @@ -87,6 +87,22 @@ describe Rack::CommonLogger do (0..1).must_include duration.to_f end + it "log path with PATH_INFO" do + logdev = StringIO.new + log = Logger.new(logdev) + Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/hello") + + logdev.string.must_match(/"GET \/hello " 200 #{length} /) + end + + it "log path with SCRIPT_NAME" do + logdev = StringIO.new + log = Logger.new(logdev) + Rack::MockRequest.new(Rack::CommonLogger.new(app, log)).get("/path", script_name: "/script") + + logdev.string.must_match(/"GET \/script\/path " 200 #{length} /) + end + def length 123 end |
