Получить текущий макет от Appender в Logback? - PullRequest
0 голосов
/ 23 июня 2011

Рассмотрим следующую базовую конфигурацию для входа в систему:

<configuration>
    <appender name="ControlAppender" class="org.quackbot.ControlAppender">
        <pattern>%d{MM/dd/yyy hh:mm:ss a}  %-5p %c - </pattern>
    </appender>
</configuration>

Как я могу использовать этот макет и отформатировать строку?Несколько разных постов в блогах и списках рассылки говорили, что когда-то в AppenderBase были методы getLayout () и setLayout (), но их смысл был удален.

Повторная реализация методов получения и установки для макета в моем коде не работает, она просто возвращает ноль.event.getFormattedMessage() возвращает исходную строку, а не отформатированную.Я не могу найти какой-либо другой метод, который бы форматировал сообщение в соответствии с макетом.

Есть ли способ форматировать сообщение в соответствии с шаблоном, указанным в конфигурации?

1 Ответ

1 голос
/ 24 июня 2011

Конфигурация Logback просто объединяет указанные вами элементы.Он не составляет компоненты самостоятельно.В приведенном выше файле конфигурации вы не указали элемент макета, и поэтому он не будет внедрен в ваш ControlAppender.

Поскольку я не знаю, что делает ControlAppender, я не могу предложить наиболее подходящее решение.,Однако у вас есть как минимум две опции:

1) Пусть ControlAppender принимает макет в качестве параметра.Ваш конфигурационный файл будет выглядеть примерно так:

<configuration>
    <appender name="ControlAppender" class="org.quackbot.ControlAppender">
        <layout class="class="ch.qos.logback.classic.PatternLayout"">
          <pattern>%d{MM/dd/yyy hh:mm:ss a}  %-5p %c - </pattern>
        </layout>
    </appender>
</configuration>

При входе в систему в журнал будет добавлен экземпляр PatternLayout в ControlAppender.Затем вы можете использовать экземпляр PatternLayout для форматирования событий в соответствии с выбранным шаблоном.

2) Если вы всегда собираетесь использовать PatternLayout, вы можете создать его непосредственно из шаблона.Ваш конфигурационный файл будет выглядеть примерно так:

<configuration>
    <appender name="ControlAppender" class="org.quackbot.ControlAppender">
      <pattern>%d{MM/dd/yyy hh:mm:ss a}  %-5p %c - </pattern>
    </appender>
</configuration>

Вам потребуется метод установки в ControlAppender, то есть setPattern, для вставки шаблона в ControlAppender.Получив шаблон, вы можете создать PatternLayout самостоятельно.Например, вызвав:

 PatternLayout pl = new PatternLayout();
 pl.setPattern(pattern);
 pl.setContext(context);
 pl.start();

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

...