Ruby - 确保Syslog被关闭

时间:2008-09-21 18:46:02

标签: ruby syslog

在我使用Syslog时总是关闭Syslog是绝对关键的吗?不这样做是否会产生巨大的负面影响?

如果事实证明我确实需要,那么有什么好办法呢?我在我的类构造函数中打开Syslog,我没有看到在Ruby中做类析构函数的方法,目前有类似的东西:

class Foo
  def initialize
    @@log = Syslog.open("foo")
  end
end

我没有立即看到Syslog.close来电的地方,但你推荐什么?

2 个答案:

答案 0 :(得分:2)

open方法接受一个块。做这样的事情:

class Foo
  def do_something
    Syslog.open do
      # work with the syslog here
    end
  end
end

答案 1 :(得分:1)

看起来你将它作为一个类变量打开......所以正确的方法就是......

class Foo
  def initialize
    @@log = Syslog.open("foo")
  end

  def Foo.finalize(id)
    @@log.close if @@log
  end
end

虽然这不是必须预测或支持的。如果您要按照自己的方式保留代码,那就是这样做的方式。