Merge pull request #3 from aserafin/master

merge Aserafin master
This commit is contained in:
Jules Ivanic 2016-03-08 12:09:05 +01:00
commit 35ff221946
10 changed files with 70 additions and 43 deletions

View file

@ -55,7 +55,7 @@ The `FilterParameters` logger will filter out sensitive parameters from your log
### Logging to file and STDOUT
You can to file and STDOUT at the same time, you just need to assign new logger
You can log to file and STDOUT at the same time, you just need to assign new logger
log_file = File.open('path/to/your/logfile.log', 'a')
log_file.sync = true

View file

@ -5,5 +5,7 @@ require 'grape_logging/formatters/json'
require 'grape_logging/loggers/base'
require 'grape_logging/loggers/response'
require 'grape_logging/loggers/filter_parameters'
require 'grape_logging/reporters/active_support_reporter'
require 'grape_logging/reporters/logger_reporter'
require 'grape_logging/timings'
require 'grape_logging/middleware/request_logger'

View file

@ -1,9 +1,6 @@
module GrapeLogging
module Loggers
class Base
def before
end
def parameters(request, response)
{}
end

View file

@ -6,17 +6,19 @@ module GrapeLogging
@replacement = replacement
end
def parameters(request, response)
filtered_parameters = request.params.clone
@filter_parameters.each do |param|
if filtered_parameters[param.to_s]
filtered_parameters[param.to_s] = @replacement
def parameters(request, _)
{ params: replace_parameters(request.params.clone) }
end
private
def replace_parameters(parameters)
parameters.tap do |parameters|
@filter_parameters.each do |parameter_name|
if parameters.key?(parameter_name.to_s)
parameters[parameter_name.to_s] = @replacement
end
end
end
{
params: filtered_parameters
}
end
end
end

View file

@ -1,14 +1,8 @@
module GrapeLogging
module Loggers
class Response < GrapeLogging::Loggers::Base
def parameters(request, response)
if response
{
response: serialized_response_body(response)
}
else
{}
end
def parameters(_, response)
response ? { response: serialized_response_body(response) } : {}
end
private
@ -17,7 +11,7 @@ module GrapeLogging
# It's strange but it's the Grape behavior...
def serialized_response_body(response)
begin
response.body.map{ |body| JSON.parse(body) }
response.body.map{ |body| JSON.parse(body.to_s) }
rescue => e
response.body
end

View file

@ -11,36 +11,30 @@ module GrapeLogging
def initialize(app, options = {})
super
if options[:instrumentation_key]
@instrumentation_key = options[:instrumentation_key]
else
@logger = @options[:logger] || Logger.new(STDOUT)
@logger.formatter = @options[:formatter] || GrapeLogging::Formatters::Default.new
end
@included_loggers = @options[:include] || []
@reporter = if options[:instrumentation_key]
Reporters::ActiveSupportReporter.new(@options[:instrumentation_key])
else
Reporters::LoggerReporter.new(@options[:logger], @options[:formatter])
end
end
def before
reset_db_runtime
start_time
@included_loggers.each(&:before)
invoke_included_loggers(:before)
end
def after
stop_time
params = parameters
@included_loggers.each do |included_logger|
params.merge! included_logger.parameters(request, response) do |key, oldval, newval|
oldval.respond_to?(:merge) ? oldval.merge(newval) : newval
end
end
if @instrumentation_key
ActiveSupport::Notifications.instrument @instrumentation_key, params
else
@logger.info params
end
@included_loggers.each { |included_logger| included_logger.after if included_logger.respond_to?(:after) }
params = collect_parameters
@reporter.perform(params)
invoke_included_loggers(:after)
nil
end
@ -101,6 +95,21 @@ module GrapeLogging
@stop_time ||= Time.now
end
def collect_parameters
parameters.tap do |params|
@included_loggers.each do |logger|
params.merge! logger.parameters(request, response) do |_, oldval, newval|
oldval.respond_to?(:merge) ? oldval.merge(newval) : newval
end
end
end
end
def invoke_included_loggers(method_name)
@included_loggers.each do |logger|
logger.send(method_name) if logger.respond_to?(method_name)
end
end
end
end
end

View file

@ -0,0 +1,11 @@
module Reporters
class ActiveSupportReporter
def initialize(instrumentation_key)
@instrumentation_key = instrumentation_key
end
def perform(params)
ActiveSupport::Notifications.instrument @instrumentation_key, params
end
end
end

View file

@ -0,0 +1,12 @@
module Reporters
class LoggerReporter
def initialize(logger, formatter)
@logger = logger || Logger.new(STDOUT)
@logger.formatter = formatter || GrapeLogging::Formatters::Default.new
end
def perform(params)
@logger.info params
end
end
end

View file

@ -15,7 +15,7 @@ module GrapeLogging
end
def append_db_runtime(event)
self.db_runtime = event.duration
self.db_runtime += event.duration
end
end
end

View file

@ -1,3 +1,3 @@
module GrapeLogging
VERSION = '1.1.3'
VERSION = '1.2.0'
end