Class: NatsWork::Middleware::Logger

Inherits:
Object
  • Object
show all
Defined in:
lib/natswork/middleware.rb

Overview

Built-in Middleware

Instance Method Summary collapse

Constructor Details

#initialize(logger: ::Logger.new($stdout)) ⇒ Logger

Returns a new instance of Logger.



60
61
62
# File 'lib/natswork/middleware.rb', line 60

def initialize(logger: ::Logger.new($stdout))
  @logger = logger
end

Instance Method Details

#call(job, message) ⇒ Object



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/natswork/middleware.rb', line 64

def call(job, message)
  job_class = job.class.name
  job_id = message['job_id']

  @logger.info "Starting job #{job_class} (#{job_id})"
  started_at = Time.now

  begin
    result = yield
    elapsed = ((Time.now - started_at) * 1000).round(2)
    @logger.info "Completed job #{job_class} (#{job_id}) in #{elapsed}ms"
    result
  rescue StandardError => e
    elapsed = ((Time.now - started_at) * 1000).round(2)
    @logger.error "Failed job #{job_class} (#{job_id}) after #{elapsed}ms: #{e.message}"
    raise
  end
end