From 57e6c0f39529949be172482a4acb178d4bf3c83a Mon Sep 17 00:00:00 2001 From: Kun Liu Date: Wed, 18 May 2016 21:33:07 +0800 Subject: [PATCH] Add log for request headers (#28) * log for request headers * add specification * fix spec * optimize readme --- README.md | 6 ++++- lib/grape_logging.rb | 1 + lib/grape_logging/loggers/request_headers.rb | 23 ++++++++++++++++++++ 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 lib/grape_logging/loggers/request_headers.rb diff --git a/README.md b/README.md index 3f77159..7d512af 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/lib/grape_logging.rb b/lib/grape_logging.rb index 8c89482..90137cb 100644 --- a/lib/grape_logging.rb +++ b/lib/grape_logging.rb @@ -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' diff --git a/lib/grape_logging/loggers/request_headers.rb b/lib/grape_logging/loggers/request_headers.rb new file mode 100644 index 0000000..3735b98 --- /dev/null +++ b/lib/grape_logging/loggers/request_headers.rb @@ -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