是否有一个库或简单的方法来捕获Ruby程序中抛出的异常并将其记录到文件中?我查看了log4r和logger,但两者的文档都未提供有关我如何执行此操作的任何示例。我远程运行这个程序并丢失stdout和stderr的句柄,如果这些信息有用的话。
你会推荐什么?
答案 0 :(得分:14)
如果你想在野外散步,试试这个:
class Exception
alias real_init initialize
def initialize(*args)
real_init *args
# log the error (self) or its args here
end
end
这将在创建时拦截新异常对象的创建。
答案 1 :(得分:4)
从Exception
救援。这样的事情可能有道理:
begin
# run your code here ..
rescue Exception => exception
# logger.error(...) ....
raise exception
end
这将记录异常,并重新引发异常,以便除了记录之外应用程序实际引发错误。
exception
是Exception
的一个实例,请查看the docs,了解您可以对此对象执行的操作(例如访问回溯)。
答案 2 :(得分:2)
如果您正在运行Rails应用,则Exception Notification插件非常方便。
答案 3 :(得分:0)
如果我做了这样的事情,它会起作用吗?
begin
main()
rescue Exception => e
myCustomErrorLogger(e)
end
def main()
# All the application code comes here.
end
我需要的是让所有未被捕获的异常移到最顶层,并被捕获并随后由错误记录功能记录。
我现在正在尝试这一点,但是如果能得到你的建议那就太棒了。
答案 4 :(得分:0)
您可以调整stdout原因和回溯的部分中的Exception类的代码。
不要忘记检查记录器是否为空,可以在创建记录器之前(或同时)抛出异常。