我们目前有一个客户端 - 服务器系统。我们有这个应用程序,它将通过将日志写入客户端PC上的文本文件来监视系统上每个事务的性能(请求/处理/ sql查询的开始时间等)。
我们当前的实现是针对每个请求,我们将打开日志文件,写入事务的详细信息,然后为我们发出的每个请求关闭文件。每个客户端都有一个单独的FileWriter实例。
我们想知道在整个应用程序的使用过程中是否更好地打开文本文件,然后在使用FileWriter的单个实例注销时关闭它。
答案 0 :(得分:0)
如果您正在进行大量编写,那么只需打开一个文件即可看到性能提升。但是,我想任何增益都不值得付出努力,因为与你正在做的其他动作(特别是sql查询)相比,这听起来像是一桶水。(
)答案 1 :(得分:0)
您的平台可能会强制您仅对同一文件使用一个FileWriter
。保持手柄打开。
您至少应该使用在内部处理线程同步的PrintWriter
。
在性能方面,您可以使用(或不使用)FileDescriptor.sync().
来交换安全性能
您可以使用FileWriter
创建FileDescriptor
,您可以从FileOutputStream
获取。{/ p>
我认为只使用log4j或Java自己的日志记录机制。