summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErol Fornoles <erol.fornoles@gmail.com>2016-05-11 15:46:15 +0800
committerJeremy Evans <code@jeremyevans.net>2020-01-27 09:14:16 -0800
commita5fc97bdfc3e92dc5539ffd2a19b5adc8f6601a0 (patch)
tree01fb772852fb9ffbd829aabe1be0b2be0b00cc1b
parenta7202b0aea974234e16c7bc5991ff6fb30ddd99f (diff)
downloadrack-a5fc97bdfc3e92dc5539ffd2a19b5adc8f6601a0.tar.gz
Rack::CommonLogger should use SCRIPT_NAME + PATH_INFO when logging request paths
-rw-r--r--lib/rack/common_logger.rb6
-rw-r--r--test/spec_common_logger.rb16
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