Мне было интересно, может ли кто-нибудь помочь мне с этим вопросом. Мой текущий код настроен, чтобы использовать Logger в java .util.logging, мы записываем журнал в один файл, а когда нам нужен доступ к журналу, мы просто читаем файл.
String filename = name + ".log";
Logger logger = Logger.getLogger(name);
logger.setLevel(Level.ALL);
final FileHandler fileHandler = new FileHandler(filename, true);
final SimpleFormatter formatter = new LogFormatter();
fileHandler.setFormatter(formatter);
logger.addHandler(fileHandler);
Содержимое журнала затем получается
Files.readAllLines(Paths.get(filename));
Возникла проблема, когда размер файла может стать слишком большим, и поэтому я хочу ограничить его. Читая документацию, я могу сделать следующее:
final FileHandler fileHandler = new FileHandler(filename, 1000000, 3, true);
Это создаст до трех файлов размером 1 МБ, циклически перебирая, когда заполнится третий, очистив первый файл и записав оттуда снова. Это идеальное решение, но в нем есть две проблемы, которые я не знаю, как решить.
Во-первых, есть ли простой способ найти имя всех созданных файлов? (Точнее, есть ли простой способ сделать это? Я ценю, что могу просто искать имя файла.0, имя файла.1 ... до предела).
Во-вторых, как мне найти " активный "файл. Пример. Допустим, один цикл уже завершен и имеется три файла («file.0», «file.1», «file.2»). Если регистратор в данный момент пишет в файл.1, как мне это определить, поэтому, когда я создаю журнал как список, верхняя часть журнала - это самое старое содержимое (в этом примере файл.2)
Спасибо Вам за любой ответ.