在Ruby中自动记录异常

时间:2009-04-19 21:37:50

标签: ruby logging exception-handling

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

你会推荐什么?

5 个答案:

答案 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

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

exceptionException的一个实例,请查看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类的代码。

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