lib/dry/logger/formatters/json.rb in dry-logger-1.0.0.rc2 vs lib/dry/logger/formatters/json.rb in dry-logger-1.0.0

- old
+ new

@@ -1,8 +1,10 @@ # frozen_string_literal: true require "json" + +require "dry/logger/constants" require "dry/logger/formatters/structured" module Dry module Logger module Formatters @@ -14,10 +16,34 @@ # @api public class JSON < Structured # @since 0.1.0 # @api private def format(entry) - "#{::JSON.generate(entry.as_json)}#{NEW_LINE}" + hash = format_values(entry).compact + hash.update(hash.delete(:exception)) if entry.exception? + ::JSON.dump(hash) + end + + # @since 0.1.0 + # @api private + def format_severity(value) + value.upcase + end + + # @since 0.1.0 + # @api private + def format_exception(value) + { + exception: value.class, + message: value.message, + backtrace: value.backtrace || EMPTY_ARRAY + } + end + + # @since 0.1.0 + # @api private + def format_time(value) + value.getutc.iso8601 end end end end end