class Sidekiq::Middleware::Server::GELFLogging
Public Class Methods
new(*args)
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 5 def initialize(*args) @args = *args end
Public Instance Methods
call(worker, item, queue) { || ... }
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 9 def call(worker, item, queue) Sidekiq::Logging.with_context("#{worker.class.to_s} JID-#{item['jid']}") do begin logger.info(filter_fields({ short_message: "Start: #{worker.class.to_s} JID-#{item['jid']}", jid: item['jid'], pid: pid, tid: tid, context: context, worker: worker.class.to_s, queue: queue, params: item['args'], latency: Sidekiq::Job.new(Sidekiq.dump_json(item)).latency, memory: memory })) start = Time.now yield # Pass the torch logger.info(filter_fields({ short_message: "Done: #{worker.class.to_s} JID-#{item['jid']}", jid: item['jid'], pid: pid, tid: tid, context: context, worker: worker.class.to_s, queue: queue, params: item['args'], runtime: elapsed(start), memory: memory })) rescue Exception => e logger.error(filter_fields({ short_message: "Fail: #{worker.class.to_s} JID-#{item['jid']}", jid: item['jid'], pid: pid, tid: tid, context: context, worker: worker.class.to_s, queue: queue, params: item['args'], runtime: elapsed(start), exception_class: e.class.to_s, exception_message: e.message, backtrace: e.backtrace.join("\n"), memory: memory })) raise e end end end
logger()
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 63 def logger Thread.current[:sidekiq_gelf_logger] ||= ::GELF::Logger.new(*@args) end
Private Instance Methods
context()
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 77 def context ::Thread.current[:sidekiq_context] end
elapsed(start)
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 85 def elapsed(start) return nil if start.nil? (Time.now - start).to_f.round(3) end
filter_fields(data)
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 90 def filter_fields(data) data.each do |key, val| if val.is_a?(String) && val.length > 32766 # max message length data[key] = "[omitted; length = #{val.length}, max = 32766]" end end data end
memory()
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 81 def memory `ps -o rss= -p #{::Process.pid}`.chomp.to_i end
pid()
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 69 def pid ::Process.pid end
tid()
click to toggle source
# File lib/sidekiq-gelf/middleware.rb, line 73 def tid ::Thread.current.object_id.to_s(36) end