lib/rack/logstasher/logger.rb in rack-logstasher-0.0.1 vs lib/rack/logstasher/logger.rb in rack-logstasher-0.0.2
- old
+ new
@@ -4,32 +4,39 @@
module Rack
module Logstasher
class Logger < Rack::CommonLogger
def initialize(app, logger, opts = {})
super(app, logger)
- @extra_headers = opts[:extra_headers] || {}
+ @extra_request_headers = opts[:extra_request_headers] || {}
+ @extra_response_headers = opts[:extra_response_headers] || {}
end
private
- def log(env, status, header, began_at)
+ def log(env, status, response_headers, began_at)
now = Time.now
data = {
:method => env["REQUEST_METHOD"],
:path => env["PATH_INFO"],
:status => status.to_i,
:duration => duration_in_ms(began_at, now).round(2),
:remote_addr => env['REMOTE_ADDR'],
:parameters => env["QUERY_STRING"],
:request => request_line(env),
- :length => extract_content_length(header)
+ :length => extract_content_length(response_headers)
}
- @extra_headers.each do |header, log_key|
+ @extra_request_headers.each do |header, log_key|
env_key = "HTTP_#{header.upcase.gsub('-', '_')}"
if env[env_key]
data[log_key] = env[env_key]
+ end
+ end
+
+ @extra_response_headers.each do |header, log_key|
+ if response_headers[header]
+ data[log_key] = response_headers[header]
end
end
event = LogStash::Event.new('@fields' => data, '@tags' => ['request'])
msg = event.to_json + "\n"