Как сделать логи, используя log4j с пользовательским заголовком? - PullRequest
0 голосов
/ 06 июля 2018

Я делаю файл журнала, используя log4j следующего формата: х, х, х, х х, х х, х, х Икс Num Num Num Num , , .

Чтобы поместить заголовки в первые 4 строки, содержащие эти x, я расширил класс PatternLayout и переопределил метод getHeader (). Код getHeader выглядит следующим образом:

@Override
public String getHeader(){
    return FIRST_LINE + SECOND_LINE + THIRD_LINE + FOURTH_LINE;
}

Я размещаю свое приложение на сервере weblogic. Проблема в том, что всякий раз, когда я перезагружаю сервер, заголовки добавляются каждый раз. И другая проблема заключается в том, что когда я нажимаю на первый запрос после перезапуска, заголовки снова добавляются как:

"Заголовок после перезапуска" «Заголовок после первого запроса»

Может ли кто-нибудь подсказать, как можно решить эту проблему или любую другую альтернативу, чтобы сделать такой же отчет с 4 строками заголовков и другими динамическими значениями после этих заголовков?

1 Ответ

0 голосов
/ 13 июля 2018

Я наконец нашел решение этой проблемы. Мы переопределим метод getHeader () и вернем заголовок только тогда, когда это необходимо. Я использовал следующий подход:

  1. Проверьте, пуста ли первая строка файла журнала.
  2. Если первой строки в файле журнала нет, только тогда я верну заголовки из метода getHeader ().

Вы можете использовать следующий код для решения этой проблемы:

 @Override
public String getHeader () {
    try (BufferedReader br = new BufferedReader (new FileReader (fileName)) {

        String line = br.readLine ();
        if (line != null)
            return null;

    } catch (IOException e) {
        e.printStackTrace ();
    }

    return FIRST_LINE + SECOND_LINE + THIRD_LINE + FOURTH_LINE;
}

Обратите внимание, что этот код будет проверять только первую строку файла, а не весь файл.

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