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:/// будут работать нормально - обратите внимание на три слеша).
Бензопила будет работать лучше, если вокруг каждого поля есть разделители - квадратные скобки, тире и т. Д., Если этот символ не будет присутствовать в поле, которое вы разграничиваете.