我有三个类,我想将日志添加到共享的单个文件中。 所以每个类的构造函数都有一个
fh = new FileHandler("log.txt", true);
LOGGER_A.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
}
catch (IOException ex) {
}
fh = new FileHandler("log.txt", true);
LOGGER_B.addHandler(fh);
SimpleFormatter formatter = new SimpleFormatter();
fh.setFormatter(formatter);
}
catch (IOException ex) {
}
当我运行第二个构造函数时,它会创建一个名为“log.txt.1”的新文件。 如何避免这种情况,我想对所有类使用log.txt文件。
答案 0 :(得分:2)
将同一个FileHandler对象添加到两个记录器中。
FileHandler将尝试锁定文件名,因此其他FileHandler不能使用同一文件。如果FileHandler无法获取锁定,它会将越来越多的数字附加到文件名的末尾,直到它获得对文件的唯一锁定。由于您的第一个FileHandler已经锁定了log.txt,因此第二个FileHandler无法获得相同的锁定。
答案 1 :(得分:1)
我认为你在这里提出的问题其实是一个功能。
来自https://docs.oracle.com/javase/8/docs/api/java/util/logging/FileHandler.html
对于一组旋转文件,当每个文件达到给定的大小限制时,它将被关闭,旋转并打开一个新文件。通过在基本文件名中添加" 0"," 1"," 2"等来命名旧文件。
所以,我认为你要做的就是更改日志文件的限制大小:)
答案 2 :(得分:0)
别忘了在FileHandler登录后关闭文件。
使用FileHandler类中的close方法: