Что вызвало сбой приложения рельсов? - PullRequest
0 голосов
/ 16 июня 2010

Я уверен, что кто-то может объяснить это.

у нас есть приложение, которое находится в производстве в течение года. В последнее время мы видим увеличение количества запросов поддержки для людей, испытывающих трудности при входе в систему. почесав голову, потому что мы не могли воссоздать проблему в разработке, мы решили включить отладочный логгер в производство на месяц. это было 5 июня.

приложение работало нормально с вышеуказанным изменением, и мы ждали.

тогда вчера мы заметили, что файлы журнала становятся огромными, поэтому мы сделали еще одно изменение в производстве

config.logger = Logger.new("#{RAILS_ROOT}/log/production.log", 50, 1048576)

после этого изменения приложение начало сбой при обработке определенного файла. эта конкретная строка кода была

RAILS_DEFAULT_LOGGER.info "Payment Information Request: ", request.inspect

как видите, вместо знака плюс была запятая. этот кусок кода был введен в марте.

вопрос в следующем: почему приложение перестало работать сейчас? если изменение уровня отладки привело к тому, что приложение обработало эту строку кода, оно должно было перестать работать 5 июня! почему сегодня. Пожалуйста, кто-нибудь, помогите нам. Мы здесь упускаем очевидное? если у вас нет ответа, по крайней мере, дайте нам знать, что мы не единственные помешанные.

Ответы [ 2 ]

2 голосов
/ 16 июня 2010

Когда вы создали новый регистратор, это был класс, отличный от исходного.

По умолчанию Rails использует ActiveSupport :: BufferedLogger , который будет принимать второй аргумент без исключения. Я считаю, что второй аргумент используется в качестве имени программы. request.inspect возвращает строку, поэтому она просто использовала ее как очень большое имя.

Новый регистратор - это просто стандартный Регистратор в ядре Ruby, который вызывает исключение, когда ему передается неправильное количество аргументов.

0 голосов
/ 16 июня 2010

Не должно быть

RAILS_DEFAULT_LOGGER.info "Payment Information Request: #{request.inspect}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...