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 = {})

Options Hash: (**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