Module: LogjamAgent

Extended by:
RequestHandling
Defined in:
lib/logjam_agent.rb,
lib/logjam_agent.rb,
lib/logjam_agent/util.rb,
lib/logjam_agent/railtie.rb,
lib/logjam_agent/request.rb,
lib/logjam_agent/version.rb,
lib/logjam_agent/forwarders.rb,
lib/logjam_agent/middleware.rb,
lib/logjam_agent/rack/logger.rb,
lib/logjam_agent/zmq_forwarder.rb,
lib/logjam_agent/amqp_forwarder.rb,
lib/logjam_agent/syslog_like_formatter.rb,
lib/logjam_agent/buffered_logger.rb

Defined Under Namespace

Modules: Forwarders, Rack, RequestHandling, Util Classes: AMQPForwarder, BufferedLogger, CallerTimeoutExceeded, ConsoleFormatter, ForwardingError, Middleware, NegativeWaitTime, Railtie, Request, SyslogLikeFormatter, ZMQForwarder

Constant Summary collapse

VERSION =
"0.13.1"

Class Method Summary collapse

Methods included from RequestHandling

finish_request, request, request=, start_request

Class Method Details

.add_forwarder(type, *args) ⇒ Object



196
197
198
199
200
201
202
# File 'lib/logjam_agent.rb', line 196

def self.add_forwarder(type, *args)
  case type
  when :zmq then Forwarders.add(ZMQForwarder.new(*args))
  when :amqp then Forwarders.add(AMQPForwarder.new(*args))
  else raise ArgumentError.new("unkown logjam transport: '#{type}'")
  end
end

.auto_detect_exception(exception_class) ⇒ Object



132
133
134
135
136
137
# File 'lib/logjam_agent.rb', line 132

def self.auto_detect_exception(exception_class)
  # ignore Exception classes created with Class.new (timeout.rb, my old friend)
  if (class_name = exception_class.to_s) =~ /^[\w:]+$/
    exception_classes << class_name unless exception_classes.include?(class_name)
  end
end

.auto_detect_logged_exceptionsObject



150
151
152
153
154
155
156
157
158
159
160
# File 'lib/logjam_agent.rb', line 150

def self.auto_detect_logged_exceptions
  return if @_exception_auto_detection_initialized
  determine_loaded_exception_classes
  Exception.class_eval <<-"EOS"
    def self.inherited(subclass)
      ::LogjamAgent.auto_detect_exception(subclass)
      ::LogjamAgent.reset_exception_matcher
    end
  EOS
  @_exception_auto_detection_initialized = true
end


102
103
104
# File 'lib/logjam_agent.rb', line 102

def self.cookie_obfuscator
  @cookie_obfuscator ||= ActionDispatch::Http::ParameterFilter.new(obfuscated_cookies)
end

.determine_loaded_exception_classesObject



143
144
145
146
147
148
# File 'lib/logjam_agent.rb', line 143

def self.determine_loaded_exception_classes
  ObjectSpace.each_object(Class) do |klass|
    auto_detect_exception(klass) if klass != Exception && klass.ancestors.include?(Exception)
  end
  reset_exception_matcher
end

.disable!Object



80
81
82
# File 'lib/logjam_agent.rb', line 80

def self.disable!
  self.disabled = true
end

.enable!Object



84
85
86
# File 'lib/logjam_agent.rb', line 84

def self.enable!
  self.disabled = false
end

.event(label, extra_fields = {}) ⇒ Object



186
187
188
189
190
191
192
193
194
# File 'lib/logjam_agent.rb', line 186

def self.event(label, extra_fields = {})
  fields = {
    :label      => label,
    :started_at => Time.now.iso8601,
    :host       => hostname
  }
  fields.merge!(extra_fields)
  forwarder.forward(encode_payload(fields), :routing_key => events_routing_key)
end

.get_hostnameObject



68
69
70
71
72
73
74
75
# File 'lib/logjam_agent.rb', line 68

def self.get_hostname
  n = Socket.gethostname
  if n.split('.').size > 1
    n
  else
    Socket.gethostbyname(n).first rescue n
  end
end

.ip_obfuscator(ip) ⇒ Object

TODO: ipv6 obfuscation



95
96
97
# File 'lib/logjam_agent.rb', line 95

def self.ip_obfuscator(ip)
  obfuscate_ips ? ip.to_s.sub(/\d+\z/, 'XXX') : ip
end

.log_to_log_device?(msg) ⇒ Boolean

Returns:

  • (Boolean)


126
127
128
129
130
# File 'lib/logjam_agent.rb', line 126

def self.log_to_log_device?(msg)
  !(log_device_ignored_lines && msg =~ log_device_ignored_lines)
rescue
  true
end

.reset_exception_matcherObject



139
140
141
# File 'lib/logjam_agent.rb', line 139

def self.reset_exception_matcher
  self.exception_matcher = Regexp.new(self.exception_classes.map{|e| Regexp.escape(e)}.join("|"))
end