log4j2 на бензопилу привет мир не работает... что я делаю не так?

Я пытаюсь передать обычное сообщение журнала приветствия, чтобы оно появилось в бензопиле из log4j2. Мне все равно, использует ли он "Zeroconf" или нет, я просто хочу что-то, что работает. Я знаю, что моя тестовая программа регистрирует сообщения, поскольку они отображаются на консоли, и я знаю, что она находит мой файл конфигурации, потому что я могу изменить формат сообщений, которые печатаются в консоли, но это все, что я знаю.

Мой конфигурационный файл (содержащий различные ошибочные предположения):

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="org.apache.logging.log4j.core.net.MulticastDNSAdvertiser">
  <appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
    </Console>
    <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file://localhost/home/matt/code/ade/logs/test.log" advertise="true">
      <XMLLayout />
    </File>
    <SocketAppender name="socketTest" host="localhost" immediateFlush="true" port="4560" protocol="TCP" advertiseURI="http://localhost" advertise="true">
      <XMLLayout />
    </SocketAppender>
  </appenders>
  <loggers>
    <root level="TRACE">
      <appender-ref ref="Console"/>
      <appender-ref ref="testFile"/>
      <appender-ref ref="socketTest"/>
    </root>
  </loggers>
</configuration>

Я пробовал различные комбинации: в том числе jmdns.jar на пути к классам, перезапуск бензопилы в разные моменты и разочарование, но ничего не помогло.

Есть идеи?

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

1 ответ

Решение

"Рекламодатель" использует механизм плагинов log4j2, поэтому вы должны указать "имя", определенное рекламодателем в конфигурации, а не полное имя класса.

Механизм рекламы log4j2 в настоящее время поддерживает рекламу FileAppenders и SocketAppenders. Однако Chainsaw поддерживает только обнаружение файловых приложений log4j2, которые объявляются с помощью PatternLayout. Поддержка XMLLayout появится в ближайшем будущем.

Чтобы использовать механизм рекламодателя log4j2, необходимо использовать последний снимок Chainsaw для разработчиков. Тарбол с бензопилой и DMG доступны по адресу: http://people.apache.org/~sdeboy/

Chainsaw обнаружит объявленную конфигурацию fileappender и проанализирует (и обнаружит, если вы получили последнюю сборку разработчика Chainsaw) файл журнала - конфигурация Chainsaw не требуется.

Обратите внимание, что вам нужно использовать PatternLayout, а JMDNS должен находиться в пути к классу приложения, использующего эту конфигурацию appender.

Вот пример конфигурации Log4j2 -appender-, которая будет объявлять конфигурацию fileappender:

<?xml version="1.0" encoding="UTF-8"?>
<configuration advertiser="multicastdns">
    <appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </Console>
        <File name="testFile" fileName="logs/test.log" bufferedIO="false" advertiseURI="file:///localhost/home/matt/code/ade/logs/test.log" advertise="true">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %m%n"/>
        </File>
    </appenders>
    <loggers>
        <root level="TRACE">
            <appender-ref ref="Console"/>
            <appender-ref ref="testFile"/>
        </root>
    </loggers>
</configuration>

После того, как вы запустили свое приложение, которое использует конфигурацию приложения, откройте вкладку "Zeroconf" в Chainsaw.

Вы должны увидеть строку с именем вашего приложения (если вы добавили jmdns в путь к классам для приложения, используя конфигурацию fileappender).

Вы можете нажать "Автоподключение", если хотите всегда запускать бензопилу с этой конфигурацией, если она доступна.

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

Рекламный URL, указанный в конфигурации вашего файлового приложения, должен быть доступен по сети для Chainsaw (похоже, вы работаете локально с Chainsaw и вашим fileappender, поэтому пути file:/// будут работать нормально - обратите внимание на три слеша).

Бензопила будет работать лучше, если вокруг каждого поля есть разделители - квадратные скобки, тире и т. Д., Если этот символ не будет присутствовать в поле, которое вы разграничиваете.

Другие вопросы по тегам