Как я могу создать приложение Log4j 2, связанное с jTextPane?

В настоящее время я пытаюсь заставить Log4j 2 войти в систему JTextPane. Он должен действовать как STDERR или STDOUT в консоли IDE Netbeans (включая стиль текста — цвет).

Я знаю, что мне нужно создать appender и соединить его с JTextPane, однако я не знаю, как это сделать с помощью Log4j 2.

У Вас есть какие-то предложения?

Я ценю твою помощь, Марти


person marty    schedule 11.03.2013    source источник


Ответы (1)


Я сделал это для Logback (только с обычным текстом). Основные вещи, которые вам нужно сделать, это:

  • Реализуйте свой собственный Appender для получения событий журнала. Log4j 2 предоставляет AbstractAppender, что даст вам базовую функциональность.
  • Используйте соответствующий Layout для форматирования события журнала (будет зависеть от типа Document, который вы используете для своего JTextPane.
  • Добавьте отформатированный текст к базовому Document для JTextPane.

Еще пара моментов:

  • Все будет проще, если вы будете регистрировать только обычный текст, и в этом случае вы должны использовать файл JTextArea.
  • Предположительно, вы захотите ограничить количество текста в файле Document. Вы можете сделать это, проверяя длину каждого добавления и вырезая первые X%, используя Document.remove, когда они превышают максимальную длину.
  • Если у вас часто выполняются журнальные операции, вам следует ограничить частоту, с которой вы добавляете к документу, и буферизовать промежуточные изменения, чтобы уменьшить накладные расходы на обновление/перерисовку качания. Я обычно использую 3 Гц. Это также рекомендуется при наличии нескольких потоков производителей журналов, потому что, хотя метод Document.insertString является потокобезопасным, он блокирует документ перед выполнением обновления и может привести к большому количеству конфликтов.

Я настоятельно рекомендую ссылаться на документацию для этого. Я никогда не использовал Log4j 2, но документация выглядит довольно прямолинейно. Точно так же раздел «Использование текстовых компонентов» в учебниках по Java содержит все, что вам нужно знать о стороне Swing. К сожалению, я не могу предоставить здесь дополнительные ссылки.

person hendalst    schedule 28.04.2013