Class: Sidekiq::Middleware::Server::Logging

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_semantic_logger/extensions/sidekiq/sidekiq.rb

Instance Method Summary collapse

Instance Method Details

#call(worker, item, queue) ⇒ Object

rubocop:disable Style/ExplicitBlockArgument



45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/rails_semantic_logger/extensions/sidekiq/sidekiq.rb', line 45

def call(worker, item, queue)
  SemanticLogger.tagged(queue: queue) do
    if perform_messages_enabled?
      worker.logger.info(
        "Start #perform",
        metric:        "sidekiq.queue.latency",
        metric_amount: job_latency_ms(item)
      )

      worker.logger.measure_info(
        "Completed #perform",
        on_exception_level: :error,
        log_exception:      :full,
        metric:             "sidekiq.job.perform"
      ) { yield }
    else
      yield
    end
  end
end

#job_latency_ms(job) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/rails_semantic_logger/extensions/sidekiq/sidekiq.rb', line 70

def job_latency_ms(job)
  return unless job && job["enqueued_at"]

  enqueued_at = job["enqueued_at"]
  if enqueued_at.is_a?(Float)
    # Sidekiq <= 7: seconds since epoch
    (Time.now.to_f - enqueued_at) * 1000
  else
    # Sidekiq 8+: milliseconds since epoch
    now = Process.clock_gettime(Process::CLOCK_REALTIME, :millisecond)
    now - enqueued_at
  end
end

#perform_messages_enabled?Boolean

Returns:

  • (Boolean)


66
67
68
# File 'lib/rails_semantic_logger/extensions/sidekiq/sidekiq.rb', line 66

def perform_messages_enabled?
  RailsSemanticLogger::Sidekiq::JobLogger.perform_messages != false
end