Apache ActiveMQ / Artemis PeriodicRotatingFileHandler - PullRequest
0 голосов
/ 19 июня 2020

Я установил брокер Apache ActiveMQ Artemis, где я хочу создавать для каждого дня новый файл artemis.log.

Я настроил logging.properties PeriodicRotatingFileHandler, но он не работает правильно.

Он создает файл журнала для дня с датой в имени файла (что правильно), но не создает файл журнала для других следующих дней. Он создает новые файлы журнала только с датой, когда я перезапускаю службу брокера.

Есть ли у кого-нибудь пример того, как должны выглядеть logging.properties для достижения моего плана?

1 Ответ

0 голосов
/ 20 июня 2020

PeriodicRotatingFileHandler проверяет время только при записи новой записи журнала: PeriodicRotatingFileHandler.java # L115

Класс PeriodicRotatingFileHandler может быть расширен, ie с помощью таймера :

public class AutoPeriodicRotatingFileHandler extends PeriodicRotatingFileHandler {
   private Timer timer = new Timer();
   private long period = 5 * 60 * 1000;
   private ExtLogRecord timerLogRecord = new ExtLogRecord(Level.ALL, "TIMER", AutoPeriodicRotatingFileHandler.class.getName());

   public AutoPeriodicRotatingFileHandler() {
      initialize();
   }

   //TODO Add required constructors here

   public AutoPeriodicRotatingFileHandler(final File file, final String suffix, final boolean append, final int period) throws FileNotFoundException {
      super(file, suffix, append);
      this.period = period;
      initialize();
   }

   private void initialize() {
      timer.schedule(new TimerTask() {
         @Override
         public void run() {
            timerLogRecord.setMillis(System.currentTimeMillis());
            preWrite(timerLogRecord);
         }
      }, 0, period);
   }

   @Override
   public void close() throws SecurityException {
      timer.cancel();
      super.close();
   }
}
...