Logstash formatter for grape_logging (#31)

* Logstash formatter for grape_logging

* Additional host parameter for Logstash
This commit is contained in:
Stefan Rothlehner 2016-08-17 18:37:05 +02:00 committed by Adrian Serafin
parent e953a23d25
commit 1fd4d6655f
3 changed files with 39 additions and 1 deletions

View file

@ -2,11 +2,13 @@ require 'grape_logging/multi_io'
require 'grape_logging/version'
require 'grape_logging/formatters/default'
require 'grape_logging/formatters/json'
require 'grape_logging/formatters/logstash'
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/loggers/logstash'
require 'grape_logging/reporters/active_support_reporter'
require 'grape_logging/reporters/logger_reporter'
require 'grape_logging/timings'

View file

@ -0,0 +1,35 @@
module GrapeLogging
module Formatters
class Logstash
def call(severity, datetime, _, data)
{
:'@timestamp' => datetime.iso8601,
:'@version' => '1',
:severity => severity
}.merge!(format(data)).to_json
end
private
def format(data)
if data.is_a?(Hash)
data
elsif data.is_a?(String)
{ message: data }
elsif data.is_a?(Exception)
format_exception(data)
else
{ message: data.inspect }
end
end
def format_exception(exception)
{
exception: {
message: exception.message
}
}
end
end
end
end

View file

@ -58,7 +58,8 @@ module GrapeLogging
},
method: request.request_method,
path: request.path,
params: request.params
params: request.params,
host: request.host
}
end