Module: Applicaster::Logger::Sidekiq

Included in:
CommonEvents, ExceptionLogger, Middleware::Server::LogstashLogging, ThreadContext, Sidekiq::JobLogger
Defined in:
lib/applicaster/logger/sidekiq.rb,
lib/applicaster/logger/sidekiq/middleware.rb,
lib/applicaster/logger/sidekiq/common_events.rb,
lib/applicaster/logger/sidekiq/thread_context.rb,
lib/applicaster/logger/sidekiq/exception_logger.rb

Defined Under Namespace

Modules: CommonEvents, Middleware Classes: ExceptionLogger, ThreadContext

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.setup(logger) ⇒ Object



9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/applicaster/logger/sidekiq.rb', line 9

def self.setup(logger)
  ::Sidekiq::Logging.logger = logger
  ::Sidekiq.configure_server do |config|
    config.error_handlers.delete_if { |h| h.is_a?(::Sidekiq::ExceptionHandler::Logger) }
    ::Sidekiq.error_handlers << Applicaster::Logger::Sidekiq::ExceptionLogger.new

    config.server_middleware do |chain|
      chain.prepend Applicaster::Logger::Sidekiq::ThreadContext
    end

    if Gem::Version.new(::Sidekiq::VERSION) < Gem::Version.new("5.0")
      require 'sidekiq/api'
      config.server_middleware do |chain|
        chain.remove ::Sidekiq::Middleware::Server::Logging
        chain.add Applicaster::Logger::Sidekiq::Middleware::Server::LogstashLogging
      end
    else
      ::Sidekiq.options[:job_logger] = ::Applicaster::Logger::Sidekiq::JobLogger
    end
  end
end

Instance Method Details

#item_class_name(item) ⇒ Object



54
55
56
# File 'lib/applicaster/logger/sidekiq.rb', line 54

def item_class_name(item)
  (item['wrapped'] || item['class']).to_s
end

#job_context(item, queue) ⇒ Object



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/applicaster/logger/sidekiq.rb', line 31

def job_context(item, queue)
  {
    sidekiq: {
      # job ID
      jid: item['jid'],
      pid: ::Process.pid,
      # thread ID
      tid: ::Thread.current.object_id.to_s(36),
      # batch ID
      bid: item['bid'],
      # If we're using a wrapper class, like ActiveJob, use the "wrapped"
      # attribute to expose the underlying thing.
      class: (item['wrapped'] || item['class']).to_s,
      queue: queue,
      args: item['args'].inspect,
    }
  }
end

#loggerObject



50
51
52
# File 'lib/applicaster/logger/sidekiq.rb', line 50

def logger
  ::Sidekiq.logger
end