14

我正在尝试使用log4j2. 我遵循了Logging server classes in Tomcat 6 with log4j2 中提供的答案。

我正在使用 tomcat 7.0.54 和log4j-core-2.1.jar, log4j-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
  • 下载tomcat-juli.jartomcat-juli-adapters.jar从“附加”
  • log4j-api-2.1.jar, log4j-core-2.1.jar, log4j-jul-2.1.jar, 和tomcat-juli-adapters.jarfrom "extras" 放入$CATALINA_HOME/lib.
  • 替换$CATALINA_HOME/bin/tomcat-juli.jartomcat-juli.jar“附加”。
  • 删除$CATALINA_BASE/conf/logging.properties
  • 将日志管理器设置为使用log4j2-jul桥 ( log4j-jul-2.1.jar) 中的管理器。更改catalina.sh以确保类路径包含bin/tomcat-juli.jar、和lib/log4j-jul-2.1.jar,并且用于启动 tomcat 的命令包含 -Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager`lib/log4j-api-2.1.jarlib/log4j-core-2.1.jar

我什至尝试添加这个(LOGGING_CONFIG="-Djava.util.logging.config.file=$CATALINA_HOME/lib/log4j2.xml"catalina.sh但没有奏效。

请让我知道是否有人可以成功配置它。

4

4 回答 4

13

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

  1. 将以下 jar 放入 $CATALINA_HOME/lib
    • log4j 2 核心 (log4j-core-2.4.1.jar)
    • log4j 2 api (log4j-api-2.4.1.jar)
    • log4j 2 桥用于 log4 j 1.0 (log4j-1.2-api-2.4.1.jar)
    • 来自 tomcat extras 的 tomcat-juli-adapters.jar
  2. 用来自 tomcat extras 的 tomcat-juli.jar 替换现有的 $CATALINA_HOME/bin/tomcat-juli.jar
  3. 删除文件 $CATALINA_HOME/conf/logging.properties
  4. 将新的 log4j 2 配置文件 (log4j2.xml) 放入 $CATALINA_HOME/lib

诀窍是遵循官方的tomcat 7 文档来设置 log4J 1.X,但改为使用 log4j2 工件。此外,此解决方案不需要对 $CATALINA_HOME/bin/catalina.sh 或任何其他文件 $CATALINA_HOME/bin 进行任何更改

于 2016-02-25T04:31:39.510 回答
6

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

于 2015-02-11T06:38:18.163 回答
5

为您的安装调整以下内容:

我的 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 引导加载程序,因为 catalina.sh/bat在运行 setenv.sh/bat 之前取消设置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
于 2017-10-12T06:58:04.903 回答
1

如上所述添加以下罐子对我有用

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>

于 2020-10-08T10:31:27.613 回答