如何使用Tomcat 8.5.15配置log4j2

zkure5ic  于 12个月前  发布在  其他
关注(0)|答案(5)|浏览(190)

我在$ Catalina _HOME/lib下有log4j 2 jar:

  • log4j-api-2.10.0.jar
  • log4j-core-2.10.0.jar
  • log4j-jul-2.10.0.jar

导出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


无法加载日志管理器“org.apache.logging.log4j.jul.LogManager”java.lang.ClassNotFoundException:
为什么LogManager仍然没有,或者我应该使用其他的jar来代替。在另一条消息中,他们说的是juli.jar和extra,但在他们的情况下,他们有旧的Tomcat版本,6或7。

xqkwcwgp

xqkwcwgp1#

您只需要将log4j 2-APIlog4j 2-corelog4j 2-appserver库添加到Tomcat类路径中,提供log4j 2配置文件,并从安装中删除$ Catalina _BASE/conf/logging.properties。
这是最容易做到的:
1.在 Catalina 主目录中创建一组名为log4j 2/lib和log4j 2/conf的目录。
1.将log4j2-api-2.x.x.jarlog4j2-core-2.x.x.jarlog4j2-appserver-2.x.x.jar放在log4j 2/lib目录中。
1.在log4j 2/conf目录中创建名为log4j2-tomcat.xml、log4j2-tomcat.json、log4j 2-tomcat.yaml、log4j 2-tomcat.yml或log4j2-tomcat.properties的文件。
1.在tomcat bin目录中创建或修改setenv.sh以包含CLASSPATH=$CATALINA_HOME/log4j2/lib/*:$CATALINA_HOME/log4j2/conf
您可以强制使用JUL框架的应用程序使用log4j 2格式,更改环境变量LOGGING_BURGER。您可以通过在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桥中。
参考文献:
https://db-blog.web.cern.ch/blog/luis-rodriguez-fernandez/2019-03-keeping-your-logs-clean-apache-tomcat-9-log4j2-and-spring-boot
https://logging.apache.org/log4j/2.x/log4j-appserver/index.html

brgchamk

brgchamk2#

我知道现在回答这个问题有点晚了,但我相信它可以帮助像我这样努力配置tomcat以使用lo 4j的人。我在过去的3天里一直在做类似的事情,我发现tomcat网站提供的extras文件夹不是我需要的。但是,你仍然可以使用maven获取它们。我能够配置tomcat,使其使用上述jar文件(tomcat-extras-juli.jar和tomcat-extras-juli-adapters.jar)。只需记住包含VM参数-Dlog4j.debug让你的生活更轻松,更快地捕捉错误。
Maven repo:https://mvnrepository.com/artifact/org.apache.tomcat.extras/tomcat-extras-juli-adapters
在我包含tomcat的存储库提供的上述jar之后,我遇到了同样的问题。经过快速分析,我发现org.apache.juli.WebAppProperties接口不包含在jar文件tomcat-extras-juli.jar中,该文件由文件org. apache. catalina. loader. WebappClassLoaderBase使用。在进一步研究之后,我意识到tomcat的jar文件包含在Maven Repo中。(目前是8.5),把那些jar文件插入我的tomcat安装中,一切都按预期工作。现在我的tomcat版本使用log4j而不是juli。

jk9hmnmh

jk9hmnmh3#

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"

字符串
复制jar文件

log4j-api-2.10.0.jar 
log4j-core-2.10.0.jar 
log4j-jul-2.10.0.jar


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

w8rqjzmb

w8rqjzmb4#

log4j2 jars必须与bootstrap.jar(tomcat启动)和tomcat-juli.jar(日志记录)一起沿着加载
这些jar位于CATALINA_HOME/bin目录中,负责tomcat的初始化,包括日志记录。
CATALINA_HOME/cataline.bat的情况下,Windows,你会发现下面的代码-

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

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

vltsax25

vltsax255#

问题是$CATALINA_BASE/lib的内容是 Common 类加载器的一部分,但是日志类是早期需要的,因此必须是 System 类加载器的一部分。参见Tomcat Class Loader How-To
我建议在$CATALINA_HOME下创建一个新的log4j目录,将log4j配置文件和jar放在那里,并使用setenv.sh(或Windows下的setenv.bat)将其添加到类路径:

$ ls $CATALINA_HOME/log4j
log4j2.xml
log4j-api-2.22.0.jar
log4j-core-2.22.0.jar
log4j-jul-2.22.0.jar
$ cat $CATALINA_HOME/bin/setenv.sh 
LOGGING_MANAGER="-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"
CLASSPATH="${CATALINA_HOME}/log4j/*:${CATALINA_HOME}/log4j"

字符串
注意:类路径条目${CATALINA_HOME}/log4j/*是一个类路径通配符,它包括${CATALINA_HOME}/log4j中的所有jar,但不包括这个目录本身。

相关问题