Ruby-确保系统日志已关闭
时间:2020-03-06 14:30:46 来源:igfitidea点击:
使用完毕后始终关闭Syslog是否绝对重要?不这样做会带来巨大的负面影响吗?
如果事实证明我确实需要这样做,那么有什么好方法呢?我在类构造函数中打开Syslog,但没有找到在Ruby中执行类析构函数的方法,目前有类似的东西:
class Foo def initialize @@log = Syslog.open("foo") end end
我没有立即看到应该调用Syslog.close的位置,但是我们有何建议?
解决方案
open方法接受一个块。做这样的事情:
class Foo def do_something Syslog.open do # work with the syslog here end end end
看来我们是将其作为类变量打开...所以正确的方法是...
class Foo def initialize @@log = Syslog.open("foo") end def Foo.finalize(id) @@log.close if @@log end end
尽管这不一定是可预测的或者受支持的。如果我们要按照自己的方式保留代码,那么这就是这样做的方法。