Class: LogjamAgent::BufferedLogger

Inherits:
Object
  • Object
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

Constructor Details

#initialize(*args) ⇒ BufferedLogger

Returns a new instance of BufferedLogger.



58
59
60
61
62
63
# File 'lib/logjam_agent/buffered_logger.rb', line 58

def initialize(*args)
  super(*args)
  # stupid bug in the buffered logger code (Rails::VERSION::STRING < "3.2")
  @log.write "\n" if @log && respond_to?(:buffer)
  @formatter = lambda{|_, _, _, message| message}
end

Instance Attribute Details

#formatterObject

Returns the value of attribute formatter.



53
54
55
# File 'lib/logjam_agent/buffered_logger.rb', line 53

def formatter
  @formatter
end

Instance Method Details

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



65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/logjam_agent/buffered_logger.rb', line 65

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) 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
  message = "#{tags_text}#{message}" unless tags_text.blank?
  time = Time.now
  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
  request.add_line(severity, time, message) if request
  message
end

#logdev=(log_device) ⇒ Object



95
96
97
98
99
100
101
102
103
104
105
# File 'lib/logjam_agent/buffered_logger.rb', line 95

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