class Semlogr::Formatters::JsonFormatter

Public Class Methods

new(opts = {}) click to toggle source
# File lib/semlogr/formatters/json_formatter.rb, line 8
def initialize(opts = {})
  default_opts = {
    mode: :custom,
    time_format: :ruby,
    use_to_json: true
  }

  @opts = default_opts.merge(opts)
end

Public Instance Methods

format(log_event) { |event| ... } click to toggle source
# File lib/semlogr/formatters/json_formatter.rb, line 18
def format(log_event)
  event = {
    timestamp: log_event.timestamp.iso8601(3),
    severity: log_event.severity.to_s,
    message: log_event.to_s
  }

  add_error(event, log_event.error)
  add_properties(event, log_event.properties)

  event = yield(event) if block_given?
  event_json = Oj.dump(event, @opts)
  "#{event_json}\n"
end

Private Instance Methods

add_error(event, error) click to toggle source
# File lib/semlogr/formatters/json_formatter.rb, line 35
def add_error(event, error)
  return unless error

  backtrace = error.backtrace || []
  event[:error] = {
    type: error.class,
    message: error.message,
    backtrace: backtrace
  }
end
add_properties(event, properties) click to toggle source
# File lib/semlogr/formatters/json_formatter.rb, line 46
def add_properties(event, properties)
  return unless properties.any?

  event[:properties] = properties
end