Sha256: 41954c5d875a6ce4d274cefb6048149674df9ec71c57b160c504d2b50d0a81ab
Contents?: true
Size: 1.56 KB
Versions: 3
Compression:
Stored size: 1.56 KB
Contents
begin require "oj" rescue LoadError require "json" end module LogjamAgent class Request attr_reader :fields, :uuid def initialize(app, env, initial_fields) @app = app @env = env @forwarder = Forwarders.get(app, env) @lines = [] @uuid = UUID4R::uuid(1).gsub('-','') @fields = initial_fields.merge(:request_id => @uuid, :host => LogjamAgent.hostname, :process_id => Process.pid, :lines => @lines) @mutex = Mutex.new end def id "#{@app}-#{@env}-#{@uuid}" end def action @fields[:action] end def caller_id @fields[:caller_id] end def caller_action @fields[:caller_action] end def add_line(severity, timestamp, message) @mutex.synchronize do @lines << [severity, format_time(timestamp), message.strip] end end def add_exception(exception) @mutex.synchronize do ((@fields[:exceptions] ||= []) << exception).uniq! end end def forward engine = @fields.delete(:engine) # puts @fields.inspect @forwarder.forward(LogjamAgent.encode_payload(@fields), :engine => engine) rescue Exception => e handle_forwarding_error(e) end private def format_time(t) # iso time with microseconds t.strftime("%Y-%m-%dT%H:%M:%S.#{"%06d" % t.usec}") end def handle_forwarding_error(exception) LogjamAgent.logger.error exception.to_s if LogjamAgent.logger LogjamAgent.error_handler.call(exception) rescue Exception # swallow all exceptions end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
logjam_agent-0.8.2 | lib/logjam_agent/request.rb |
logjam_agent-0.8.1 | lib/logjam_agent/request.rb |
logjam_agent-0.8.0 | lib/logjam_agent/request.rb |