Class: Betterlog::LogEventFormatter

Inherits:
ActiveSupport::Logger::Formatter
  • Object
show all
Includes:
ActiveSupport::TaggedLogging::Formatter
Defined in:
lib/betterlog/log_event_formatter.rb

Instance Method Summary collapse

Instance Method Details

#call(severity, timestamp, program, message) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/betterlog/log_event_formatter.rb', line 9

def call(severity, timestamp, program, message)
  super
  message = message.to_s
  if cc.log.legacy_supported
    if message.blank?
      return ''
    elsif !Log::Event.is?(message)
      m = message.sub(/\s+$/, '')
      timestamp = timestamp.utc.iso8601(3)
      event = Log::Event.new(
        emitter:    emitter,
        timestamp:  timestamp,
        message:    m,
        severity:   severity.to_s.downcase,
        # tags:       current_tags,
      )
      if backtrace = m.grep(/^\s*([^:]+):(\d+)/)
        if backtrace.size > 1
          event[:backtrace] = backtrace.map(&:chomp)
          event[:message] = 'a logged backtrace'
        end
      end
      if l = caller_locations.reverse_each.each_cons(2).find { |c, n|
           n.absolute_path =~ /\/lib\/ruby\/.*?\/logger\.rb/ and break c
        }
      then
        event[:location] = [ l.absolute_path, l.lineno ] * ?:
      end
      program and event[:program] = program
      message = event.to_json
    end
  end
rescue => e
  Betterlog::Log.logger.error(e)
ensure
  # Do not "message << ?\n" - A frozn string may be passed in
  message.end_with?(?\n) or message = "#{message}\n"
  return message
end

#emitterObject



5
6
7
# File 'lib/betterlog/log_event_formatter.rb', line 5

def emitter
  'legacy'
end