Я использую java.util.logging.Logger и завернул его в синглтон. Таким образом, я могу получить к нему хороший доступ ко всей моей программе (также в потоках).
import java.util.logging.*;
import java.io.*;
public class LogTest
{
public static void init () throws Exception
{
LogManager.getLogManager().reset ();
}
public static Logger get () throws Exception
{
Logger l = LogManager.getLogManager ().getLogger ("test");
if (l == null)
{
l = Logger.getLogger ("test");
FileHandler fh = new FileHandler ("test.log", 100000, 1, true);
l.addHandler (fh);
l.setLevel (Level.parse ("INFO"));
}
return l;
}
}
Я думаю, это намного лучше, чем глобальные или мимолетные ссылки.
Я вызываю LogTest.init () в самом начале моей главной страницы.
Затем я вызываю LogTest.get () везде, где мне нужно для регистрации. Даже если это нить.
LogTest.get().info ("blabla");
Это работает хорошо. Но я понял, что через 1-2 минуты, когда я не печатал несколько строк в лог-файле, расширение файла увеличивается на 1.
test.log -> test.log.1
....
test.log.1 -> test.log.2
Я ожидаю, что ТОЛЬКО, если размер файла превышает максимальный (100 КБ FileHandler)
Есть идеи, если это проблема, связанная с потоками или FileHandler? Почему это поведение? Я не ожидал бы, что изменение файла журнала.