Allow for exception instances to get serialized in JSON logging

This commit is contained in:
Guy Boertje 2016-11-22 14:41:11 +00:00 committed by Suyog Rao
parent 94c8f9913b
commit 23df3d1506
3 changed files with 21 additions and 4 deletions

View file

@ -3,3 +3,4 @@ require "logstash/patches/bugfix_jruby_2558"
require "logstash/patches/cabin" require "logstash/patches/cabin"
require "logstash/patches/profile_require_calls" require "logstash/patches/profile_require_calls"
require "logstash/patches/stronger_openssl_defaults" require "logstash/patches/stronger_openssl_defaults"
require "logstash/patches/exception_to_json"

View file

@ -0,0 +1,5 @@
class Exception
def to_json
{"exception_name" => self.class.name, "message" => message}
end
end

View file

@ -2,6 +2,7 @@
require "socket" require "socket"
require "logstash/patches" require "logstash/patches"
require "flores/pki" require "flores/pki"
require "logstash/json"
describe "OpenSSL defaults" do describe "OpenSSL defaults" do
subject { OpenSSL::SSL::SSLContext.new } subject { OpenSSL::SSL::SSLContext.new }
@ -88,3 +89,13 @@ describe "OpenSSL defaults" do
end end
end end
end end
describe "exceptions used json logging hashes" do
let(:exception) { ArgumentError.new("so you want an argument, huh?") }
let(:result) { [] }
it "should not raise errors" do
expect { result << LogStash::Json.dump({"error" => exception}) }.not_to raise_error
expect(result[0]).to match(/ArgumentError.*so you want an argument/)
end
end