Я должен регистрировать события, происходящие в геме, который выполняется заданием resque. Для регистрации того, что происходит в базе данных Rails, я делаю следующее:
#in gem:
class Foo
def self.logger
@@logger ||= Logger.new(nil)
end
def self.logger=(logger)
@@logger = logger
end
def self.logger_reset
self.logger = Logger.new(nil)
end
def self.logger_write(obj_id, message, method = :info)
self.logger.send(method, "|%s|%s|" % [obj_id, message])
end
end
#in rails in initializers
Foo.logger = MyRailsLogger.new
#in in rails in lib or in model if it uses ActiveRecord
class MyRailsLogger
def info
...
end
...
end
Таким образом, я могу регистрировать события, происходящие в другом процессе, а также фильтровать журналы по object_id экземпляра Foo, поэтому регистрируются только соответствующие данные.