Class: LogjamAgent::BufferedLogger

Inherits:
ActiveSupport::Logger show all
Includes:
RequestHandling
Defined in:
lib/logjam_agent/buffered_logger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from RequestHandling

#finish_request, #request, #request=, #start_request

Methods inherited from ActiveSupport::Logger

broadcast, original_broadcast

Constructor Details

#initialize(*args) ⇒ BufferedLogger

Returns a new instance of BufferedLogger.



35
36
37
38
# File 'lib/logjam_agent/buffered_logger.rb', line 35

def initialize(*args)
  super(*args)
  @formatter = lambda{|_, _, _, message| message}
end

Instance Attribute Details

#formatterObject

Returns the value of attribute formatter.



30
31
32
# File 'lib/logjam_agent/buffered_logger.rb', line 30

def formatter
  @formatter
end

Instance Method Details

#add(severity, message = nil, progname = nil, tags_text = nil, &block) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'lib/logjam_agent/buffered_logger.rb', line 40

def add(severity, message = nil, progname = nil, tags_text = nil, &block)
  return if level > severity
  message = progname if message.nil?
  progname = nil
  message ||= block.call || '' if block
  request = LogjamAgent.request
  if message.is_a?(Exception)
    request.add_exception(message.class.to_s, severity) if request
    message = format_exception(message)
  else
    message = message.to_s
    if request && severity >= Logger::ERROR && (e = detect_logged_exception(message))
      request.add_exception(e)
    end
  end
  log_to_log_device = LogjamAgent.log_to_log_device?(severity, message)
  message = "#{tags_text}#{message}" unless tags_text.blank?
  time = Time.now
  if log_to_log_device
    formatted_message = formatter.call(severity, time, progname, message)
    if respond_to?(:buffer)
      buffer <<  formatted_message << "\n"
      auto_flush
    elsif @log # @log is a logger (or nil for rails 4)
      @log << "#{formatted_message}\n"
    elsif @logdev
      @logdev.write(formatted_message)
    end
  end
  request.add_line(severity, time, message) if request
  message
end

#logdev=(log_device) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/logjam_agent/buffered_logger.rb', line 73

def logdev=(log_device)
  raise "cannot connect logger to new log device" unless log_device.respond_to?(:write)
  if respond_to?(:buffer)
    @log = log_device
  else
    (@log||self).instance_eval do
      raise "cannot set log device" unless defined?(@logdev)
      @logdev = log_device
    end
  end
end