2015-02-11 2 views
9

Я пытаюсь настроить внутреннее ведение журнала tomcat 7 с помощью log4j2. Я выполнил ответ, указанный в Logging server classes in Tomcat 6 with log4j2.tomcat 7 внутренний журнал с log4j2.xml

Я использую tomcat 7.0.54 и log4j-core-2.1.jar, log4j-api-2.1.jar. я вниз загружается экстры и сделал все приведенные ниже шаги, но когда я начинаю кота, я получаю сообщение об ошибке:

ERROR StatusLogger No log4j2 configuration file found. Using default configuration: logging only errors to the console. 

Эти шаги я выполнил:

  • поставил log4j2.xml в $CATALINA_BASE/lib
  • загрузить tomcat-juli.jar и tomcat-juli-adapters.jar от "массовки"
  • поставил log4j-api-2.1.jar, log4j-core-2.1.jar, log4j-jul-2.1.jar и tomcat-juli-adapters.jar от "дополнительных" до $CATALINA_HOME/lib.
  • заменить $CATALINA_HOME/bin/tomcat-juli.jar на tomcat-juli.jar из категории "дополнительные услуги".
  • удалить $CATALINA_BASE/conf/logging.properties
  • установить менеджер протоколирования использовать менеджер из log4j2-jul моста (log4j-jul-2.1.jar). Alter catalina.sh, чтобы гарантировать, что включает в себя путь к классам bin/tomcat-juli.jar, lib/log4j-jul-2.1.jar, lib/log4j-api-2.1.jar и lib/log4j-core-2.1.jar, и команду, используемую для запуска включает в себя кота -Djava.util.logging.manager = org.apache.logging.log4j.jul.LogManager`

Я даже попытался добавить это (LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/lib/log4j2.xml") в catalina.sh, но не работал.

Пожалуйста, дайте мне знать, если кто-нибудь сможет его успешно настроить.

ответ

4

Моя ошибка, мне нужно было включить $CATALINA_BASE/lib в classpath для log4j2.xml.

+0

Почему вы должны добавить $ CATALINA_BASE/LIB в вашем пути к классам? Согласно документации, библиотеки в $ CATALINA_BASE/lib или $ CATALINA_BASE/bin должны иметь приоритет для библиотек в $ CATALINA_HOME/lib или $ CATALINA_HOME/bin. Таким образом, нет необходимости добавлять что-либо в путь к классам, предполагается, что путь к классам будет правильно построен в зависимости от определения $ CATALINA_BASE. Это, как говорится, у меня такая же проблема с Tomcat 8. Я получаю следующее сообщение об ошибке: Не удалось загрузить LogManager «org.apache.logging.log4j.jul.LogManager» java.lang.ClassNotFoundException: .. – Achille

+1

Фактически вместо установки CLASSPATH вы можете просто определить переменную LOGGING_CONFIG следующим образом: log4j: LOGGING_CONFIG = "- Dlog4j.configurationFile = $ {CATALINA_BASE} /conf/log4j2.xml", если ваш файл конфигурации $ {CATALINA_BASE} /conf/log4j2.xml. – Achille

7

Я сделал следующие шаги, и это сработало для меня.

  1. Поместите следующие банки в $ CATALINA_HOME/Lib
    • log4j 2 ядра (log4j-ядро-2.4.1.jar)
    • log4j 2 API (log4j-API-2.4.1.jar)
    • log4j 2 моста для log4 J 1.0 (log4j-1,2-апи-2.4.1.jar)
    • -Juli кот-adapters.jar из TOMCAT дополнений
  2. Заменить существующий $ Catalin A_HOME/бен/кот-juli.jar с котом-juli.jar из TOMCAT статистов
  3. Удалить файл $ CATALINA_HOME/CONF/logging.properties
  4. Поместите новый log4j 2 конфигурационный файл (log4j2.xml) в $ CATALINA_HOME/Библиотека

хитрость заключается в том, чтобы следовать официальной tomcat 7 documentation для установки lOG4J 1.X, но вместо этого использовать log4j2 артефакты вместо этого. Также это решение не требует никаких изменений в $ CATALINA_HOME/bin/catalina.ш или любые другие файлы $ CATALINA_HOME/бен

+1

Отлично! Я использовал эти шаги вместе с этим log4j2.xml: https://gist.github.com/bmaupin/475a0cd6e8b374d876f5085846761fb6 – bmaupin

+0

@bmaupin Где мне нужно разместить указанный файл XML? – gahse

+0

@gahse Смотрите шаг # 4 в ответе выше – bmaupin

0

Адаптировать следующие для установки:

My Tomcat 8.5.x находится в/Opt/котом/

1. Скопируйте log4j2 JAR-файлы в/Opt/TOMCAT/LIBS/

(для Windows использования копии)

2. Создать /opt/tomcat/conf/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?> 
<Configuration status="OFF"> 
    <Appenders> 
     <Console name="Console" target="SYSTEM_OUT"> 
      <PatternLayout pattern="LOGJ2 %d [%-6p] %c{1} – %m%n"/> 
     </Console> 
    </Appenders> 
    <Loggers> 
     <Logger name="*" level="trace"> 
      <AppenderRef ref="Console"/> 
     </Logger> 

     <Root level="info"> 
      <appenderRef ref="Console" level="info"/> 
     </Root> 
    </Loggers> 
</Configuration> 

3. Создание и редактирование /opt/tomcat/bin/setenv.sh или /opt/tomcat/bin/setenv.bat

Без CLASSPATH, установленного в setenv.sh/bat, первоначальный загрузчик Tomcat не сможет получить доступ к классам org.apache.logging.log4j.jul.LogManager и log4j2. Установка CLASSPATH перед запуском Tomcat не влияет на начальный загрузчик Tomcat с момента catalina.sh/bat unsets CLASSPATH перед запуском setenv.sh/bat

#The environment variable CLASSPATH is unset in catalina.sh/catalina.bat 
CLASSPATH=/opt/tomcat/libs/log4j-api-2.9.1.jar:/opt/tomcat/libs/log4j-core-2.9.1.jar:/opt/tomcat/libs/log4j-jul-2.9.1.jar 
JAVA_OPTS=-Dlog4j.configurationFile=/opt/tomcat/conf/log4j2.xml 
LOGGING_MANAGER=-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager 

4. Показать журналы в /opt/tomcat/log/catalina.out и обратите внимание на LOGJ2 префикс из log42.xml

LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Server built:   Sep 28 2017 10:30:11 UTC 
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Server number:   8.5.23.0 
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – OS Name:    Linux 
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – OS Version:   4.4.0-93-generic 
LOGJ2 2017-10-12 08:47:37,797 [INFO ] VersionLoggerListener – Architecture:   amd64 
Смежные вопросы