Class: IuguLogger::JobLogger::Adapter

Inherits:
Object
  • Object
show all
Defined in:
lib/iugu_logger/job_logger.rb

Overview

Common body for Sidekiq + ActiveJob — wraps a job execution with the 1-log-per-execution pattern. Both wrappers below delegate here.

Instance Method Summary collapse

Constructor Details

#initialize(job_class:, job_id:, queue:, source:, attempt:) ⇒ Adapter

Returns a new instance of Adapter.



31
32
33
34
35
36
37
# File 'lib/iugu_logger/job_logger.rb', line 31

def initialize(job_class:, job_id:, queue:, source:, attempt:)
  @job_class = job_class.to_s
  @job_id    = job_id.to_s
  @queue     = queue.to_s
  @source    = source.to_s
  @attempt   = attempt.to_i
end

Instance Method Details

#callObject



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/iugu_logger/job_logger.rb', line 39

def call
  Buffer.reset!
  buffer = Buffer.current

  request = build_request
  labels  = build_labels

  buffer.add_context(request: request, labels: labels)

  start = monotonic_now
  result = yield
  emit_completed(request: request, labels: labels,
                 duration_ms: elapsed_ms(start), logs: buffer.drain)
  result
rescue StandardError => e
  emit_failed(request: request, labels: labels, error: e,
              duration_ms: elapsed_ms(start), logs: buffer&.drain || [])
  raise
ensure
  Buffer.reset!
end