class LogjamAgent::BufferedLogger
Attributes
formatter[RW]
Public Class Methods
new(*args)
click to toggle source
Calls superclass method
# File lib/logjam_agent/buffered_logger.rb, line 35 def initialize(*args) super(*args) @formatter = lambda{|_, _, _, message| message} end
Public Instance Methods
add(severity, message = nil, progname = nil, tags_text = nil, &block)
click to toggle source
# 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)
click to toggle source
# 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
Private Instance Methods
detect_logged_exception(message)
click to toggle source
# File lib/logjam_agent/buffered_logger.rb, line 87 def detect_logged_exception(message) (matcher = LogjamAgent.exception_matcher) && message[matcher] end
format_exception(exception)
click to toggle source
# File lib/logjam_agent/buffered_logger.rb, line 91 def format_exception(exception) msg = "#{exception.class}(#{exception.message})" if backtrace = exception.backtrace backtrace = Rails.backtrace_cleaner.clean(backtrace, :all) if defined?(Rails) msg << ":\n #{backtrace.join("\n ")}" else msg end end