每次发生某事时,我都想记录(追加文本)到一个文件中。我发现这可能是使用 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
}
}
我担心的是这个日志方法被频繁调用,每次调用这个方法时输出都会关闭并重新打开,这是不必要的。同时,我想受益于 Java 7 的 try-with-resources 语句功能。
我的担心是不必要的,因为重新打开和关闭写入器不是一项昂贵的操作吗?或者我应该使用 Java 6 的老式方法,即手动处理异常并将输出声明为成员字段并在应用程序结束时手动关闭输出?
最佳答案
不,您不应该不在每次要向日志文件追加新行时打开和关闭FileWriter
。
你应该:
- 在应用程序启动时打开日志文件
- 附加到它
- 调用
flush()
- 最后调用
close()
。
或者如果您想使用 try-with-resources 语句,那么调用记录器方法的代码应该放在 try-with-resources 语句的主体中。由于这一点,您将不必调用 close()
方法,因为它会自动调用。
然而,最好的解决方案是,使用现有的、经过实战检验的开源记录器之一,例如 log4j 或 logback,而不是重新设计轮子,它涵盖了所有这些内部细节和公开一个简单的 API,使您可以简单地记录提供的消息。
关于java - 我应该为每一行日志使用 try-with-resources 语句吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30194388/