class Ougai::Formatters::Pino
A JSON formatter compatible with pino
def _call(severity, time, progname, data)
def _call(severity, time, progname, data) flat_err(data) dump({ name: progname || @app_name, hostname: @hostname, pid: $$, level: to_level(severity), time: time, v: 1 }.merge(data)) end
def convert_time(data)
def convert_time(data) data[:time] = (data[:time].to_f * 1000).to_i end
def datetime_format=(val)
def datetime_format=(val) raise NotImplementedError, 'Not support datetime_format attribute' unless val.nil? end
def flat_err(data)
def flat_err(data) return unless data.key?(:err) err = data.delete(:err) msg = err[:message] data[:type] ||= 'Error' data[:msg] ||= msg stack = "#{err[:name]}: #{msg}" stack += "\n" + (" " * @trace_indent) + err[:stack] if err.key?(:stack) data[:stack] ||= stack end
def initialize(app_name = nil, hostname = nil, opts = {})
(**opts)
-
:with_newline
(String
) -- the value of with_newline attribute -
:jsonize
(String
) -- the value of jsonize attribute -
:serialize_backtrace
(String
) -- the value of serialize_backtrace attribute -
:trace_max_lines
(String
) -- the value of trace_max_lines attribute -
:trace_indent
(String
) -- the value of trace_indent attribute
Parameters:
-
opts
(Hash
) -- the initial values of attributes -
hostname
(String
) -- hostname (hostname if nil) -
app_name
(String
) -- application name (execution program name if nil)
def initialize(app_name = nil, hostname = nil, opts = {}) aname, hname, opts = Base.parse_new_params([app_name, hostname, opts]) super(aname, hname, opts) init_opts_for_json(opts) @trace_indent = opts.fetch(:trace_indent, 4) @serialize_backtrace = true end