Java 如何使用Tomcat 8.5.15配置log4j2

Java 如何使用Tomcat 8.5.15配置log4j2,java,tomcat,log4j,log4j2,catalina,Java,Tomcat,Log4j,Log4j2,Catalina,我有$CATALINA_HOME/lib下的log4j2 jar: log4j-api-2.10.0.jar log4j-core-2.10.0.jar log4j-jul-2.10.0.jar export JAVA_OPTS=“${JAVA_OPTS}-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager” 在catalina.properties中,我有一个公共类加载器,我尝试再次添加log4j-jul-2

我有$CATALINA_HOME/lib下的log4j2 jar:

  • log4j-api-2.10.0.jar
  • log4j-core-2.10.0.jar
  • log4j-jul-2.10.0.jar
export JAVA_OPTS=“${JAVA_OPTS}-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager”

在catalina.properties中,我有一个公共类加载器,我尝试再次添加log4j-jul-2.10.0.jar,即使它已经在catalina_HOME/lib下,但没有成功

common.loader=“${catalina.base}/lib”,“${catalina.base}/lib/.jar”,“${catalina.home}/lib”,“${catalina.home}/lib/.jar”,“/opt/tomcat/apache-tomcat-8.5.15/lib/log4j-jul-2.10.0.jar”

我删除了Tomcat下的logging.properties,并将新的log4j2.xml添加到path

错误消息:

无法加载Logmanager“org.apache.logging.log4j.jul.Logmanager” java.lang.ClassNotFoundException:org.apache.logging.log4j.jul.LogManager


你知道为什么LogManager仍然不见了,或者我应该用其他的罐子来代替吗。在另一条消息中,他们说的是juli.jar和extras,但在他们的情况下,他们使用的是较旧的Tomcat版本,6或7。

log4j2 jar
必须与
bootstrap.jar
(Tomcat启动)和
Tomcat juli.jar
(日志记录)一起加载

这些JAR位于
CATALINA_HOME/bin
目录中,负责 tomcat的初始化,包括日志记录

CATALINA\u HOME/cataline.bat中
对于windows,您可以找到以下代码-

set "CLASSPATH=%CLASSPATH%%CATALINA_HOME%\bin\bootstrap.jar"

在这里,您应该在类路径中添加log4j2 jar,这样当tomcat启动时,这些jar就在那里了。

tomcat\bin\
文件
setenv.bat
中创建并添加到文件:

set "CLASSPATH=%CLASSPATH%%CATALINA_BASE%\bin;%CATALINA_BASE%\bin\log4j-core-2.10.0.jar;%CATALINA_BASE%\bin\log4j-api-2.10.0.jar;%CATALINA_BASE%\bin\log4j-jul-2.10.0.jar"
复制jars文件

log4j-api-2.10.0.jar 
log4j-core-2.10.0.jar 
log4j-jul-2.10.0.jar
到文件夹
tomcat\bin\


tomcat\bin
文件夹中创建文件
log4j2.xml

我知道现在回答这个问题有点晚了,但我相信它可以帮助像我这样努力配置tomcat以使其使用lo4j的人。 在过去的3天里,我一直在做类似的事情,我发现tomcat网站提供的extras文件夹不是我需要的。但是,您仍然可以使用maven获取它们。我能够配置tomcat,以便它使用提到的jar文件(tomcat-extras-juli.jar和tomcat-extras-juli-adapters.jar)。只需记住包含VM参数-Dlog4j.debug,以使您的生活更轻松,更快地捕获错误

Maven回购:


在包含tomcat存储库提供的上述JAR之后,我遇到了同样的问题。经过快速分析,我发现org.apache.juli.WebAppProperties接口不包含在jar文件tomcat-extras-juli.jar中,该文件由org.apache.catalina.loader.WebappClassLoaderBase文件使用。在进一步研究之后,我意识到TomcatJAR文件包含在Maven Repo中。我在同一版本的tomcat(目前为8.5)下下载了上面提到的jar文件,将这些jar插入到我的tomcat安装中,一切正常。现在,我的tomcat版本使用log4j而不是juli。

您只需将log4j2 apilog4j2 corelog4j2 appserver库添加到tomcat类路径中,提供log4j2配置文件并从安装中删除$CATALINA_BASE/conf/logging.properties

这最容易通过以下方式实现:

  • 在catalina home中创建一组名为log4j2/lib的目录,并 log4j2/conf

  • 放置
    log4j2-api-2.x.x.jar
    log4j2-core-2.x.x.jar
    ,以及
    log4j2/lib目录中的log4j2-appserver-2.x.x.jar

  • 创建名为log4j2-tomcat.xml、log4j2-tomcat.json的文件, log4j2-tomcat.yaml、log4j2-tomcat.yml或log4j2-tomcat.properties 在log4j2/conf目录中

  • 在tomcat bin目录中创建或修改setenv.sh以包括
    CLASSPATH=$CATALINA_HOME/log4j2/lib/*:$CATALINA_HOME/log4j2/conf


  • 您可以强制使用JUL框架的应用程序使用log4j2格式来更改环境变量LOGGING_MANAGER。您可以通过在setenv.sh文件中添加:
    LOGGING_MANAGER=“-Djava.util.LOGGING.MANAGER=org.apache.LOGGING.log4j.jul.LogManager”

    请记住,
    org.apache.logging.log4j.jul.LogManager
    包含在必须添加到类路径的
    log4j-jul-2.x.x.jar
    桥中


    参考文献:


    在哪里可以买到tomcat-juli.jar?我看了这里,它不见了?查看zip文件内部-。解压缩这个zip文件,您将在
    bin
    目录中找到这个JAR。