在Ruby中自动记录exception

是否有一个库或简单的方法来捕获Ruby程序中抛出的exception并将其记录到文件中? 我查看了log4r和logger ,但两者的文档都没有提供任何关于如何执行此操作的示例。 我远程运行该程序并丢失stdout和stderr的句柄,如果该信息有帮助的话。

你会推荐什么?

如果你想在野外散步,试试这个:

class Exception alias real_init initialize def initialize(*args) real_init *args # log the error (self) or its args here end end 

这将在创建时拦截新exception对象的创建。

Exception拯救。 这样的事情可能有意义:

 begin # run your code here .. rescue Exception => exception # logger.error(...) .... raise exception end 

这将记录exception,并重新引发它,以便除了日志记录之外应用程序实际引发错误。

exceptionException一个实例,请查看docs以获取有关此对象可以执行的操作的信息(例如访问backtrace)。

如果您正在运行Rails应用程序,则Exception Notification插件非常方便。

如果我做了这样的事情会有用吗:

 begin main() rescue Exception => e myCustomErrorLogger(e) end def main() # All the application code comes here. end 

我需要的是让所有未被捕获的exception移动到最顶层,然后被捕获并随后由错误记录function记录。

我现在正在尝试这个,但是有你的建议会很棒。

您可以调整stdout原因和回溯的部分中的Exception类的代码。

不要忘记检查记录器是否为空,可以在创建记录器之前(或同时)抛出exception。