2016-10-18 16 views
0

ActiveJobSidekiqによって、いくつかのバックグラウンドジョブを実行するRailsアプリケーションがあります。SidekiqログでJobクラス名の代わりにJobWrapperが表示される

2016-10-18T06:17:01.911Z 3252 TID-oukzs4q3k ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper JID-97318b38b1391672d21feb93 INFO: start 

ログは定期的にSidekiq労働者のために働くかと、ここで同様の仕事のクラス名を表示するいくつかの方法があります:端末とログファイルの両方にsidekiqログは次を示して?

アップデート:私のsidekiqバージョンは私がClient JobActiveJob::QueueAdapters::SidekiqAdapter::JobWrapperを交換したいと思います3.4.2

ある

2016-10-18T11:05:39.690Z 13678 TID-or4o9w2o4 ClientJob JID-b3c71c9c63fe0c6d29fd2f21 INFO: start 

アップデート2:ここでは

がどのようにSidekiqワーカーのログです

答えて

0

いくつかの古代版を実行している必要があります。アップグレード。

申し訳ありません、それはRails 5+の機能のようです。 Railsをアップグレードする必要があります。 https://github.com/rails/rails/commit/8d2b1406bc201d8705e931b6f043441930f2e8ac

+0

を、私は、最新のバージョンにアップグレードし、そこに結果がまだありました同じ。クラス名は 'ActiveJob :: QueueAdapters :: SidekiqAdapter :: JobWrapper'と評価されます。いずれにしても、古いバージョン(3.4.2)を維持しながらジョブ名を表示する方法はありますか? –

0

私はこれを行うために、ミドルウェア構成からSidekiq::Middleware::Server::Loggingを削除し、ログに引数を表示する変更されたクラスを追加しました。引数自体には、ジョブ名とアクション名も含まれています。 sidekiq.rb

require 'sidekiq' 
require 'sidekiq/middleware/server/logging' 

class ParamsLogging < Sidekiq::Middleware::Server::Logging 
    def log_context(worker, item) 
    klass = item['wrapped'.freeze] || worker.class.to_s 
    "#{klass} (#{item['args'].try(:join, ' ')}) JID-#{item['jid'.freeze]}" 
    end 
end 

Sidekiq.configure_server do |config| 
    config.server_middleware do |chain| 
    chain.remove Sidekiq::Middleware::Server::Logging 
    chain.add ParamsLogging 
    end 
end 
バージョン 3.4.2については

、または類似の最新バージョン、現在4.2.3については

、代わりにcallメソッドをオーバーライドします。

class ParamsLogging < Sidekiq::Middleware::Server::Logging 
    def call(worker, item, queue) 
    klass = item['wrapped'.freeze] || worker.class.to_s 
    Sidekiq::Logging.with_context("#{klass} (#{item['args'].try(:join, ' ')}) JID-#{item['jid'.freeze]}") do 
     begin 
     start = Time.now 
     logger.info { "start" } 
     yield 
     logger.info { "done: #{elapsed(start)} sec" } 
     rescue Exception 
     logger.info { "fail: #{elapsed(start)} sec" } 
     raise 
     end 
    end 
    end 
end 
+0

より良いアプローチを見たいので、この回答を受け入れることを控えます。 –

関連する問題