我刚刚阅读了Logger gem文档,关闭该方法引起了我的注意。现在我想知道是否在使用后必须关闭记录器文件,例如:
log = Logger.new("foo.log")
# program here logging things
log.close
我以前从未关闭过它,这似乎不是问题,也许它会在程序完成时自动关闭?
TL; DR:除非您确实知道应该这样做,否则您不应该这样做。
在Logger有LogDevice可能是任何设备:一个文件,一个端口,插座,管道。一些设备被称为是罚款一并发访问,但其中大部分都没有。例如,如果您将套接字用作日志记录设备,则操作系统将阻止任何其他尝试写入此套接字的尝试。不建议同时写入文件,尽管通常可以这样做,因为那样会导致混乱。
除非您期望其他应用程序将访问同一设备进行写入,否则不要关闭该设备是安全的。在时它会自动关闭Logger被GC'ed。
另一方面,如果您正在写入共享文件,或者期望目标在程序运行期间可能被第三方使用,则在不需要该设备以允许其他人同时访问该设备时,关闭设备更安全。作家。
注意:Logger#close实际上会关闭底层设备:
# File logger.rb, line 569
def close
  @logdev.close if @logdev
end
| 归档时间: | 
 | 
| 查看次数: | 386 次 | 
| 最近记录: |