红宝石:2.3.2
导轨:5.0.0.1
我有以下课程
class JobA < ApplicationJob
def perform(args)
Rails.logger.debug "JobA log"
if condition_1
JobB.perform_later(args)
else
JobC.perform_later(args)
end
end
end
class JobB < ApplicationJob
def perform(args)
Rails.logger.debug "JobB log"
end
end
class JobC < ApplicationJob
def perform(args)
Rails.logger.debug "JobC log"
end
end
class RecurringJob
def perform
JobA.perform_later(args)
end
end
我希望将每个 JobA、JobB、JobC 类写入的日志重定向到所需的文件。但是它不起作用。
我试过以下
/config/initializers/logging.rb
# Reference: https://stackoverflow.com/a/44168717/936494
class SelectedJobsLogger
LOG_FILE_PATH = Rails.root.join('log', 'selected_jobs.log')
class << self
cattr_accessor :logger
delegate :debug, :info, :warn, :error, :fatal, :to => :logger
end
end
module SelectedJobsLogHelpers
LOGGER_CLAZZ = SelectedJobsLogger
private
def log_debug_message(msg)
LOGGER_CLAZZ.debug(msg)
end
end
SelectedJobsLogger.logger = ActiveSupport::TaggedLogging.new(ActiveSupport::Logger.new(logger_clazz::LOG_FILE_PATH))
SelectedJobsLogger.logger.level = Rails.logger.level
然后以下列方式更新我的工作课程
class JobA < ApplicationJob
include SelectedJobsLogHelpers
def perform(args)
log_debug_message "JobA log"
if condition_1
JobB.perform_later(args)
else
JobC.perform_later(args)
end
end
end
class JobB < ApplicationJob
include SelectedJobsLogHelpers
def perform(args)
log_debug_message "JobB log"
end
end
class JobC < ApplicationJob
include SelectedJobsLogHelpers
def perform(args)
log_debug_message "JobC log"
end
end
有了这个,只有"JobA log"
被写入log/selected_jobs.log
并且正在被写入JobB log
JobC log
log/development.log
日志/selected_jobs.log
# Logfile created on 2019-07-11 20:55:47 +0530 by logger.rb/56438
JobA log
日志/development.log
[ActiveJob] Enqueued JobA (Job ID: cbdc5989-40a5-4dd9-8ade-b14ea85c0214) to Sidekiq(queue_1) with arguments: 63
[ActiveJob] [JobA] [cbdc5989-40a5-4dd9-8ade-b14ea85c0214] Performing JobA from Sidekiq(my_queue) with arguments: 63
[ActiveJob] [JobA] [cbdc5989-40a5-4dd9-8ade-b14ea85c0214] Enqueued JobB (Job ID: a1de8536-1cda-47b7-ba7e-7e3e913c58b3) to Sidekiq(queue_2) with arguments: 162
[ActiveJob] [JobA] [cbdc5989-40a5-4dd9-8ade-b14ea85c0214] Performed JobA from Sidekiq(my_queue) in 160.3ms
[ActiveJob] [JobB] [a1de8536-1cda-47b7-ba7e-7e3e913c58b3] Performing JobB from Sidekiq(queue_2) with arguments: 162
[ActiveJob] [JobB] [a1de8536-1cda-47b7-ba7e-7e3e913c58b3] JobB log
[ActiveJob] [JobB] [a1de8536-1cda-47b7-ba7e-7e3e913c58b3] Performed JobB from Sidekiq(queue_2) in 349.68ms
[ActiveJob] Enqueued JobA (Job ID: 90b1863e-4967-41d6-8ad9-a9a329df46e9) to Sidekiq(queue_1) with arguments: 63
[ActiveJob] [JobA] [90b1863e-4967-41d6-8ad9-a9a329df46e9] Performing JobA from Sidekiq(queue_1) with arguments: 63
....
...
[ActiveJob] [JobA] [90b1863e-4967-41d6-8ad9-a9a329df46e9] Performed JobA from Sidekiq(queue_1) in 13.21ms
从log/selected_jobs.log中也可以看出,作业日志不是以log/development.log格式写入的格式写入的。我需要将前一个文件中的日志以与后者相同的格式写入。
任何人都可以帮我实现想要的东西吗?