Я пытаюсь записать в свои файлы журнала при выполнении задачи граблей. Это хорошо работает в режиме разработки, но как только я переключаюсь на продуктивную среду, ничто не записано в файлы журнала.
Я читал здесь
Как я использую пользовательский журнал для своих задач граблей в Ruby on Rails?
то, что это - нормальное поведение и также нашло #wontfix билет в маяке.
Мой вопрос: существует ли способ произвести, что продолжается, в то время как моя задача граблей работает? Это выполняет некоторую проверку и работает в течение многих часов. Я предпочел бы, если бы вывод вошел в определенный файл журнала как /log/crawler.log
Прямо сейчас я просто использую эту команду для записи в файлы журнала:
ActiveRecord::Base.logger.info "Log Text"
Спасибо!
Вы можете создать новый логгер с помощью Logger.new("file.log") и затем вызвать его методы следующим образом.
task :import_stuff => :environment do
require 'csv'
l = Logger.new("stuff.log")
csv_file = "#{RAILS_ROOT}/stuff.csv"
CSV.open(csv_file, 'r') do |row|
l.info row[1]
end
end
Проблема заключается в том, что rails игнорирует журналы уровня «информация» в производственном режиме.
Я бы рекомендовал прочитать это: http://www.ruby-doc.org/stdlib/libdoc/logger/rdoc/classes/Logger.html
и создать свой собственный регистратор:
logger = Logger.new('logfile.log')
logger.info "Something happened"