java我应该为每一行日志使用trywithresources语句吗?
我想在每次有事情发生时都将日志(追加文本)记录到文件中。我发现这可能是Java 7的try with resources语句实现这一点的正确方法:
public void log(String textLine) {
try(PrintWriter output = new PrintWriter(new BufferedWriter(new FileWriter("Logfile.txt", true)))) {
output.println(textLine);
}catch (IOException e) {
//exception handling
}
}
我担心的是,这个log方法经常被调用,每次调用这个方法时,输出都会关闭并重新打开,这是不必要的。同时,我想从Java7的trywithresources语句特性中获益
我的担心是不是没有必要,因为重新打开和关闭一个writer并不是一个昂贵的操作?或者我应该使用Java6的老式方式,即手动处理异常,将输出声明为成员字段,并在应用程序结束时手动关闭输出
# 1 楼答案
不,每次要在日志文件中添加新行时,都应该而不是打开和关闭
FileWriter
你应该:
flush()
close()
李>或者,如果您想使用try with resources语句,那么调用logger方法的代码应该放在try with resources语句的主体中。由于这一点,您将不必调用
close()
方法,因为它将被自动调用然而,最好的解决方案是使用一个现有的、经过战斗测试的开源记录器,如log4j或logback,它覆盖所有这些内部细节,并公开一个简单的API,允许您简单地记录提供的消息,而不是重新启动控制盘