Вступление
Добро пожаловать в третью часть нашей серии блогов по настройке серверов приложений для использования альтернативных каркасов журналов. На этот раз мы переходим к WildFly, серверу приложений с открытым исходным кодом от JBoss. Опять же, мы будем настраивать его для использования Log4j2 и SLF4J с Logback.
Для тех из вас, кто ищет части 1 и 2 этой серии, найдите их здесь:
Часть 1 — GlassFish
Часть 2 — WebLogic
Для справки, среда, используемая для этого блога: 64-битная виртуальная машина Linux, JDK 8u20, Log4j 2.0.2, Logback 1.1.2, SLF4J 1.7.7, WildFly 8.1, а также сборка / программирование с использованием NetBeans 8.0.
Как и в предыдущих статьях этой серии, я предполагаю, что вы настроили WildFly, прежде чем пытаться следить за этим блогом. Простое руководство по этому вопросу можно найти в руководстве Jboss по кластеризации; за ним довольно легко следовать, и вы получите базовую среду, если у вас ее еще нет.
Следуя норме этой серии, давайте начнем с Log4j2.
Log4j2
Log4J2 довольно легко установить с WildFly для каждого развертывания; WildFly официально не поддерживает использование ваших собственных регистраторов на уровне домена, что означает, что конфигурация, описанная в этом блоге, будет применяться только к этому приложению, в частности (так же, как при использовании SLF4J и Logback с WebLogic, как описано в моем предыдущем блоге ).
Поскольку мы настраиваем это для каждого развертывания (или для приложения, если вы предпочитаете), нам не нужно импортировать какие-либо jar-файлы в WildFly; мы упаковываем их с приложением. Имея это в виду, давайте создадим тестовое приложение (если вы прочитали предыдущие два блога в этой серии, вы узнаете программу):
- Создайте сервер в NetBeans, который соответствует вашей установке WildFly (вам понадобится плагин WildFly: инструменты, плагины, доступные плагины, сервер приложений WildFly )
- Создать веб-приложение на Java
- Создайте сервлет в этом проекте.
- Загрузите Log4j и добавьте в проект следующие два файла JAR:
- log4j-апи-2.0.2.jar
- log4j-ядро-2.0.2.jar
- Добавьте следующий оператор импорта в ваш сервлет:
import org.apache.logging.log4j.*;
- Объявите и инициализируйте регистратор:
private static Logger logger = LogManager.getLogger(TestServlet.class.getName());
- Отредактируйте метод processRequest следующим образом:
protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); try (PrintWriter out = response.getWriter()) { logger.trace("Tracing!"); logger.debug("Debugging!"); logger.info("Information!"); logger.warn("Warnings!"); logger.error("Oh noes!"); } }
Подготовив сообщения журнала, отредактируйте
страницу index.html , созданную NetBeans, чтобы предоставить нам кнопку для вызова сервлета с помощью:
<html> <head> <title>Testing</title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> </head> <body> <form name="testForm" action="TestServlet"> <input type="submit" value="push me!" name="testybutton" /> </form> </body> </html>
После завершения программирования нам нужно создать файл конфигурации для использования в Log4j. Немного встряхнув его от предыдущих блогов этой серии, мы создадим файл конфигурации log4j2.xml , который печатает сообщения журнала любого уровня в файл в моем домашнем каталоге (замените каталог / home / andrew на тот, где вы хотите сохранить файл журнала):
- В папке WEB-INF вашего проекта NetBeans создайте папку с именем classes
- Создайте здесь XML- файл с именем log4j2.xml и заполните его следующим образом:
<?xml version="1.0" encoding="UTF-8"?> <Configuration status="WARN"> <Appenders> <File name="FileLogger" fileName="/home/andrew/wildfly.log"> <PatternLayout pattern="%d{HH:mm} [%t] %-5level %logger{36} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="trace"> <AppenderRef ref="FileLogger"/> </Root> </Loggers> </Configuration>
Готово! Создайте свое приложение и разверните его в WildFly. Откройте приложение в вашем браузере, нажмите на кнопку, и вы найдете файл, созданный в вашем домашнем каталоге с вашими сообщениями в журнале.
SLF4J и Logback
Как и раньше, для использования нашей собственной привязки и конфигурации SLF4J и Logback мы будем настраивать для каждого развертывания. Прежде всего, давайте заставим наше приложение использовать Logback:
- Загрузите SLF4J и Logback и добавьте следующие JAR-файлы в ваше веб-приложение:
- SLF4J-апи
- Logback-жильный
- Logback-классик
- Удалите пакет Log4j и вместо этого импортируйте:
import org.slf4j.Logger; import org.slf4j.LoggerFactory;
- Измените инициализацию регистратора на:
private static Logger logger = LoggerFactory.getLogger(TestServlet.class.getName());
Метод
processRequest не требует каких-либо дополнительных изменений в дополнение к тому, как мы его уже изменили, хотя вы можете смело изменять сообщения для удовольствия; Я изменил сообщение об уровне ошибки на «о дорогие» для ясности, так как в моей конфигурации оба приложения записывали в один и тот же файл (и если вы читаете этот блог, то скоро ваш).
Создайте файл xml в каталоге
WEB-INF / classes с именем
logback.xml и заполните его следующей конфигурацией (она выполняет ту же функцию, что и Log4j2):
<configuration> <appender name="FILE" class="ch.qos.logback.core.FileAppender"> <file>/home/andrew/wildfly.log</file> <append>true</append> <encoder> <Pattern>%d{HH:mm} [%thread] %-5level %logger{52} - %msg%n</Pattern> </encoder> </appender> <root> <level value="TRACE"/> <appender-ref ref="FILE"/> </root> </configuration>
В отличие от настройки WildFly с Log4j2, мы еще не закончили. Нам нужно отключить параметр add-logging-api-dependencies, чтобы запретить
WildFly добавлять неявные зависимости ведения журнала в наше развертывание. Для этого нам нужно использовать CLI JBoss.
Перейдите в
каталог bin WildFly и выполните следующую команду (заменив
$ ip и
$ port собственными значениями):
jboss-cli.sh -c controller=$ip:$port --gui
Откроется окно, через которое вы можете изменить глобальные настройки WildFly. Если вы не поняли, для успешного выполнения этой команды вам нужно будет запустить WildFly. Настройка, к которой мы стремимся, находится в подсистеме регистрации . Если вы находитесь в режиме домена (например, руководство, на которое я привел ссылку вверху), вам необходимо внести изменения в группу серверов, на которую вы развертываете приложение.
Щелкните правой кнопкой мыши параметр add-logging-api-dependencies , выберите write-attribute и снимите флажок со значения . Поле cmd в верхней части может привлечь ваше внимание при нажатии OKкак он наполняется командой; это команда, которую вы должны были бы заполнить, если бы использовали командную строку. Нажмите «отправить» в верхнем правом углу, и результат должен отобразить « успех ».
Перезапустите WildFly и вот! Вы готовы к развертыванию!
Завершение
Теперь вы должны иметь представление о том, как использовать альтернативное ведение журналов с WildFly, предоставляя вам большую гибкость ведения журналов в вашей работе и работе. Заключительная запись в этой серии будет посвящена Apache Tomcat, так что проверьте это в ближайшее время. А пока читайте некоторые другие наши блоги на WildFly и JBoss Server:
WildFly 8.0.0. Выпущен финал.
Защита JBoss EAP 6 — Реализация SSL
Как контролировать * все * свойства JTA в JBoss AS 7 / EAP 6