Автоматическая регистрация исключений в Ruby
Есть ли библиотека или простой способ поймать исключения, брошенные в программу Ruby и зарегистрировать ее в файле? Я просмотрел log4r и logger, но документы на обоих не дают никаких примеров того, как я буду это делать. Я запускаю эту программу удаленно и теряю дескрипторы в stdout и stderr, если эта информация вообще помогает.
Что вы порекомендовали бы?
Ответы
Ответ 1
Если вы хотите прогуляться по дикой стороне, попробуйте следующее:
class Exception
alias real_init initialize
def initialize(*args)
real_init *args
# log the error (self) or its args here
end
end
Это приведет к перехвату создания новых объектов исключений в момент создания.
Ответ 2
Спасение с Exception
. Что-то вроде этого, вероятно, имеет смысл:
begin
# run your code here ..
rescue Exception => exception
# logger.error(...) ....
raise exception
end
Это будет регистрировать исключение и повторно поднимать его, чтобы приложение действительно вызывало ошибку в дополнение к протоколированию.
Exception
является экземпляром Exception
, посмотрите документы для получения информации о том, что вы можете сделать с этим объектом (например, доступ к обратному каналу).
Ответ 3
Если вы используете приложение Rails, плагин Notification Notification очень удобен.
Ответ 4
Будет ли это работать, если я сделаю что-то вроде этого:
begin
main()
rescue Exception => e
myCustomErrorLogger(e)
end
def main()
# All the application code comes here.
end
Мне нужно, чтобы все мои неперехваченные исключения переместились на самый верхний уровень и были пойманы там и впоследствии записаны функцией регистрации ошибок.
Я пробую это сейчас, но было бы здорово, если бы у вас были ваши предложения.
Ответ 5
Вы можете настроить код класса Exception в части, которая ставит в основу причины и обратную трассировку.
Не забудьте проверить, может ли журнал быть пустым, исключение может быть выбрано до (или пока) созданного журнала.