class JsonFormatter

Custom Json Logger Formatter

Public Instance Methods

call(severity, time, _progname, msg) click to toggle source
# File lib/rails_stdout_json_logging/json_formatter.rb, line 5
def call(severity, time, _progname, msg)
  return if msg.blank?
  log_line = { '@timestamp': time.utc.iso8601(6),
               level: severity.to_s }.merge(format(msg)).compact
  %(#{log_line.to_json}\n)
end
format(msg) click to toggle source
# File lib/rails_stdout_json_logging/json_formatter.rb, line 12
def format(msg)
  case msg
  when ::String
    { message: msg }
  when ::Hash
    msg
  when ::Exception
    format_exception(msg)
  else
    { message: msg.inspect }
  end
end
format_exception(exception) click to toggle source
# File lib/rails_stdout_json_logging/json_formatter.rb, line 25
def format_exception(exception)
  {
    exception: exception.class,
    message: exception.message,
    backtrace: exception.backtrace
  }
end