mirror of
https://github.com/samsonjs/grape_logging.git
synced 2026-03-25 08:55:47 +00:00
introducing reporters, refactoring
This commit is contained in:
parent
bce166747f
commit
4541d5a6c7
8 changed files with 68 additions and 41 deletions
|
|
@ -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'
|
||||
|
|
|
|||
|
|
@ -1,9 +1,6 @@
|
|||
module GrapeLogging
|
||||
module Loggers
|
||||
class Base
|
||||
def before
|
||||
end
|
||||
|
||||
def parameters(request, response)
|
||||
{}
|
||||
end
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
11
lib/grape_logging/reporters/active_support_reporter.rb
Normal file
11
lib/grape_logging/reporters/active_support_reporter.rb
Normal 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
|
||||
12
lib/grape_logging/reporters/logger_reporter.rb
Normal file
12
lib/grape_logging/reporters/logger_reporter.rb
Normal 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
|
||||
|
|
@ -1,3 +1,3 @@
|
|||
module GrapeLogging
|
||||
VERSION = '1.1.3'
|
||||
VERSION = '1.2.0'
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in a new issue