lib/ougai/formatters/for_json.rb in ougai-1.6.3 vs lib/ougai/formatters/for_json.rb in ougai-1.6.4

- old
+ new

@@ -1,8 +1,21 @@ +require 'oj' + module Ougai - # The features for JSON + # The features for JSON formatter + # @attr [Boolean] jsonize Whether log should converts JSON + # @attr [Boolean] with_newline Whether tailing NL should be appended module Formatters::ForJson + attr_accessor :jsonize, :with_newline + + protected + + def init_opts_for_json(opts) + @jsonize = opts.fetch(:jsonize, true) + @with_newline = opts.fetch(:with_newline, true) + end + def to_level(severity) case severity when 'TRACE' 10 when 'DEBUG' @@ -16,8 +29,20 @@ when 'FATAL' 60 else 70 end + end + + OJ_OPTIONS = { mode: :custom, time_format: :xmlschema, + use_as_json: true, use_to_hash: true, use_to_json: true } + + # requires convert_time(data) method + def dump(data) + return data unless @jsonize + convert_time(data) + str = Oj.dump(data, OJ_OPTIONS) + str << "\n" if @with_newline + str end end end