Sha256: 41667d4ead495525a150a548be033d3c6b19f012a51f5ffbfb8fac0d05fbcac9

Contents?: true

Size: 1.27 KB

Versions: 1

Compression:

Stored size: 1.27 KB

Contents

module GoodJob::Logging
  extend ActiveSupport::Concern

  included do
    cattr_accessor :logger, default: ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(STDOUT))

    def self.tag_logger(*tags)
      if logger.respond_to?(:tagged)
        tags.unshift "GoodJob" unless logger.formatter.current_tags.include?("GoodJob")
        logger.tagged(*tags) { yield }
      else
        yield
      end
    end
  end

  class LogSubscriber < ActiveSupport::LogSubscriber
    def create(event)
      good_job = event.payload[:good_job]

      info do
        "Created GoodJob resource with id #{good_job.id}"
      end
    end

    def timer_task_finished(event)
      result = event.payload[:result]
      exception = event.payload[:error]

      if exception
        error do
          "ERROR: #{exception}\n #{exception.backtrace}"
        end
      end
    end

    def job_finished(event)
      result = event.payload[:result]
      exception = event.payload[:error]

      if exception
        error do
          "ERROR: #{exception}\n #{exception.backtrace}"
        end
      end
    end

    private

    def logger
      GoodJob.logger
    end

    def thread_name
      Thread.current.name || Thread.current.object_id
    end
  end
end

GoodJob::Logging::LogSubscriber.attach_to :good_job

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
good_job-0.2.0 lib/good_job/logging.rb