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