Add log for request headers (#28)

* log for request headers

* add specification

* fix spec

* optimize readme
This commit is contained in:
Kun Liu 2016-05-18 21:33:07 +08:00 committed by Adrian Serafin
parent 14f16c21c0
commit 57e6c0f395
3 changed files with 29 additions and 1 deletions

View file

@ -51,7 +51,8 @@ You can include logging of other parts of the request / response cycle by includ
logger: logger,
include: [ GrapeLogging::Loggers::Response.new,
GrapeLogging::Loggers::FilterParameters.new,
GrapeLogging::Loggers::ClientEnv.new ]
GrapeLogging::Loggers::ClientEnv.new,
GrapeLogging::Loggers::RequestHeaders.new ]
end
#### FilterParameters
@ -60,6 +61,9 @@ The `FilterParameters` logger will filter out sensitive parameters from your log
#### ClientEnv
The `ClientEnv` logger will add `ip` and user agent `ua` in your log.
#### RequestHeaders
The `RequestHeaders` logger will add `request headers` in your log.
### Logging to file and STDOUT
You can log to file and STDOUT at the same time, you just need to assign new logger

View file

@ -6,6 +6,7 @@ require 'grape_logging/loggers/base'
require 'grape_logging/loggers/response'
require 'grape_logging/loggers/filter_parameters'
require 'grape_logging/loggers/client_env'
require 'grape_logging/loggers/request_headers'
require 'grape_logging/reporters/active_support_reporter'
require 'grape_logging/reporters/logger_reporter'
require 'grape_logging/timings'

View file

@ -0,0 +1,23 @@
module GrapeLogging
module Loggers
class RequestHeaders < GrapeLogging::Loggers::Base
HTTP_PREFIX = 'HTTP_'.freeze
def parameters(request, _)
headers = {}
request.env.each_pair do |k, v|
next unless k.to_s.start_with? HTTP_PREFIX
k = k[5..-1].split('_').each(&:capitalize!).join('-')
headers[k] = v
end
{ headers: headers }
end
end
end
end