Module: LogFormatter::Common

Included in:
Log4r::JSONFormatter::Base, Ruby::JSONFormatter::Base
Defined in:
lib/log_formatter/common.rb

Instance Method Summary collapse

Instance Method Details

#build_event(message, severity, time, progname) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/log_formatter/common.rb', line 2

def build_event(message, severity, time, progname)
  data = message
  if data.is_a?(String) && data.start_with?('{'.freeze)
    data = (JSON.parse(message) rescue nil) || message
  end

  event = case data
            when Hash
              data
            else
              {"message".freeze => msg2str(data)}
          end

  event[@config[:level].freeze] ||= severity
  event[@config[:type].freeze] = progname
  event[@config[:app].freeze] = @app
  event[@config[:timestamp].freeze] = current_time(time).iso8601
  "#{@ext.merge(event).to_json}\n"
end

#current_time(time) ⇒ Object



34
35
36
37
# File 'lib/log_formatter/common.rb', line 34

def current_time(time)
  return time if time
  Time.respond_to?(:current) ? Time.current : Time.now
end

#msg2str(msg) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/log_formatter/common.rb', line 22

def msg2str(msg)
  case msg
  when ::String
    msg.gsub("\n", "\t")
  when ::Exception
    "#{ msg.message } (#{ msg.class })\t" <<
      (msg.backtrace || []).join("\t")
  else
    msg.inspect
  end
end