log4j - DailyRollingFileAppender, переопределить subAppend () - PullRequest
1 голос
/ 10 октября 2011

Я новичок в классе logRj DailyRollingFileAppender, и я хотел бы использовать его для ежедневного ротации файла журнала и в то же время хотел бы также вручную изменять файл журнала каждый раз, когда происходит событие, инициируемое для события журнала.

Например, я хотел бы всегда увеличивать значение на единицу для "TOTAL COUNT:" внутри файла журнала.Как я могу это сделать?

Пример содержимого журнала:

07 Oct 2011 16:57:51 [INFO ] - Failed
07 Oct 2011 16:57:51 [WARN ] - Failed
07 Oct 2011 16:57:51 [ERROR] - Successful
07 Oct 2011 16:57:51 [FATAL] - Failed
07 Oct 2011 16:57:52 [DEBUG] - Successful
07 Oct 2011 16:57:52 [INFO ] - Failed
07 Oct 2011 16:57:52 [WARN ] - Failed
07 Oct 2011 16:57:52 [ERROR] - Successful
07 Oct 2011 16:57:52 [FATAL] - Failed
07 Oct 2011 16:57:53 [DEBUG] - Successful
07 Oct 2011 16:57:53 [INFO ] - Failed
07 Oct 2011 16:57:53 [WARN ] - Failed
07 Oct 2011 16:57:53 [ERROR] - Successful
07 Oct 2011 16:57:53 [FATAL] - Failed
07 Oct 2011 16:57:54 [DEBUG] – Successful

TOTAL COUNT: 15

1 Ответ

0 голосов
/ 11 октября 2011

Кажется, переопределение subAppend() в DailyRollingFileAppender - это путь. Вы также должны быть осторожны при вызове super.subAppend(), поскольку WriterAppender реализует это следующим образом:

protected void subAppend(LoggingEvent event) {
    this.qw.write(this.layout.format(event));
    // ...
}

и вам не нужен макет с вашей строкой "TOTAL COUNT".

В моем subAppend() я бы скопировал именно то, что делает D.R.F.Appender, добавив:

  • логика подсчета строк, если ее нет в другом месте,
  • условие, проверяющее, должна ли печататься специальная строка, затем форматирование и печать непосредственно в qw.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...