如何在每次执行方法时创建(并写入)新的日志文件?

时间:2013-09-05 13:15:06

标签: java logging memory-leaks slf4j

我们目前使用SLF4J进行日志记录。到目前为止,我们每个工作都会有一个记录器。作业是一个简单的Java类,它有一个方法execute()。现在需要在每次作业运行时创建一个新的日志文件。因此,应创建一个在其名称中包含当前时间的新日志文件,并且需要在export()方法调用期间记录必要的信息。

尽我所能:

void export(){
    Logger LOG = LoggerFactory.getLogger("*current time hh:ss*");
    LOG.addHandler(new FileHandler("*current time hh:ss*.log"));
    LOG.info("something"); 
}

但由于记录器的数量正在扩大,我不确定是否存在内存泄漏。 还有其他方法吗?

1 个答案:

答案 0 :(得分:1)

记录器专为有限数量的记录器而设计,这些记录器在应用程序的生命周期中存在。

如果你想为每个作业创建一个新文件,我只需要创建一个新的FileWriter并写入它并在完成后关闭。

顺便说一句:每次创建一个新文件会使性能降低大约20毫秒,以防万一。