使用log4j2.xml进行tomcat 7内部日志记录

时间:2015-02-11 03:27:20

标签: tomcat logging log4j2 tomcat-juli

我正在尝试使用log4j2配置tomcat 7内部日志记录。我已按照Logging server classes in Tomcat 6 with log4j2提供的答案。

我正在使用tomcat 7.0.54和log4j-core-2.1.jarlog4j-api-2.1.jar。 我已经下载了额外的内容,并完成了以下所有步骤,但是当我启动tomcat时,我收到一个错误:

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

这些是我执行的步骤:

  • log4j2.xml放入$CATALINA_BASE/lib
  • 从" extras"
  • 下载tomcat-juli.jartomcat-juli-adapters.jar
  • 从" extras"中添加log4j-api-2.1.jarlog4j-core-2.1.jarlog4j-jul-2.1.jartomcat-juli-adapters.jar进入$CATALINA_HOME/lib
  • $CATALINA_HOME/bin/tomcat-juli.jar替换为来自"额外内容" {/ 1}的tomcat-juli.jar
  • 删除$CATALINA_BASE/conf/logging.properties
  • 将日志记录管理器设置为使用log4j2-jul网桥(log4j-jul-2.1.jar)中的管理器。更改catalina.sh以确保类路径包含bin/tomcat-juli.jarlib/log4j-jul-2.1.jarlib/log4j-api-2.1.jarlib/log4j-core-2.1.jar,并且用于启动tomcat的命令包括 -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 个答案:

答案 0 :(得分:8)

我采取了以下步骤,它对我有用。

  1. 将以下jar放入$ CATALINA_HOME / lib中
    • log4j 2 core(log4j-core-2.4.1.jar)
    • log4j 2 api(log4j-api-2.4.1.jar)
    • log4j 2 for log4 j 1.0(log4j-1.2-api-2.4.1.jar)
    • 来自tomcat extras的
    • tomcat-juli-adapters.jar
  2. 将现有的$ CATALINA_HOME / bin / tomcat-juli.jar替换为来自tomcat extras的tomcat-juli.jar
  3. 删除文件$ CATALINA_HOME / conf / logging.properties
  4. 将新的log4j 2配置文件(log4j2.xml)放入$ CATALINA_HOME / lib
  5. 诀窍是跟随官方tomcat 7 documentation设置log4J 1.X,而是改为使用log4j2工件。此解决方案也不需要对$ CATALINA_HOME / bin / catalina.sh或任何其他文件进行任何更改$ CATALINA_HOME / bin

答案 1 :(得分:5)

我的错误,我需要在$CATALINA_BASE/lib的类路径中包含log4j2.xml才能被选中。

答案 2 :(得分:3)

根据您的安装调整以下内容:

我的Tomcat 8.5.x位于/ opt / tomcat /

<强> 1。将log4j2 jar文件复制到/ opt / tomcat / lib /

(对于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

如果没有在setenv.sh/bat中设置CLASSPATH,则初始Tomcat引导加载程序将无法访问类org.apache.logging.log4j.jul.LogManager和log4j2类。在启动Tomcat之前设置CLASSPATH不会影响初始Tomcat引导加载程序,因为在运行setenv.sh/bat之前catalina.sh/bat unsets CLASSPATH

#The environment variable CLASSPATH is unset in catalina.sh/catalina.bat
CLASSPATH=/opt/tomcat/lib/log4j-api-2.9.1.jar:/opt/tomcat/lib/log4j-core-2.9.1.jar:/opt/tomcat/lib/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中的日志并注意log42.xml中的LOGJ2前缀

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

答案 3 :(得分:0)

添加上述提到的Jars对我有用

Apache Tomcat / 7.0.70

  1. /tomcat/lib/log4j-core-2.13.3.jar
  2. /tomcat/lib/log4j-api-2.13.3.jar
  3. /tomcat/lib/log4j-1.2-api-2.13.3.jar(esapi正常工作需要 流)

/tomcat/bin/setenv.sh

LOG_PARAMS="-Dlog4j.configurationFile=file:///tomcat/conf/log4j2.xml"

/tomcat/conf/log4j2.xml

<?xml version="1.0" encoding="UTF-8"?>

<Configuration>

   <!-- ================================= -->
   <!-- Preserve messages in a local file -->
   <!-- ================================= -->

   <Appenders>
      <!-- A time/date based rolling appender -->
      <RollingFile name="FILE" fileName="../logs/server.log" 
               filePattern="../logs/server.log.%d{yyyy-MM-dd}" append="true">
         <PatternLayout>
            <pattern>%d %-5p [%c] [%t] [%x] %m%n</pattern>
         </PatternLayout>
         <Policies>
            <TimeBasedTriggeringPolicy interval="1" modulate="true"/>
         </Policies>
      </RollingFile>

   </Appenders>

   <Loggers>

   <!-- ======================= -->
   <!-- Setup the Root category -->
   <!-- ======================= -->

      <Root>
         <AppenderRef ref="FILE" level="debug"/>
      </Root>

   </Loggers>
</Configuration>

相关问题