Статьи

Альтернативные каркасы журналирования для серверов приложений: WildFly

Вступление

Добро пожаловать в третью часть нашей серии блогов по настройке серверов приложений для использования альтернативных каркасов журналов. На этот раз мы переходим к 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