我在$ 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。
5条答案
按热度按时间xqkwcwgp1#
您只需要将log4j 2-API、log4j 2-core和log4j 2-appserver库添加到Tomcat类路径中,提供log4j 2配置文件,并从安装中删除$ Catalina _BASE/conf/logging.properties。
这是最容易做到的:
1.在 Catalina 主目录中创建一组名为log4j 2/lib和log4j 2/conf的目录。
1.将
log4j2-api-2.x.x.jar
、log4j2-core-2.x.x.jar
和log4j2-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的
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。
jk9hmnmh3#
在
tomcat\bin\
文件中创建setenv.bat
并添加到文件中:字符串
复制jar文件
型
到文件夹
tomcat\bin\
在
tomcat\bin
文件夹中创建文件log4j2.xml
w8rqjzmb4#
log4j2 jars
必须与bootstrap.jar
(tomcat启动)和tomcat-juli.jar
(日志记录)一起沿着加载这些jar位于
CATALINA_HOME/bin
目录中,负责tomcat的初始化,包括日志记录。在
CATALINA_HOME/cataline.bat
的情况下,Windows,你会发现下面的代码-字符串
在这里,您应该在类路径中添加log4j 2 jar,这样当tomcat启动时,这些jar就在那里了。
vltsax255#
问题是
$CATALINA_BASE/lib
的内容是 Common 类加载器的一部分,但是日志类是早期需要的,因此必须是 System 类加载器的一部分。参见Tomcat Class Loader How-To。我建议在
$CATALINA_HOME
下创建一个新的log4j
目录,将log4j配置文件和jar放在那里,并使用setenv.sh
(或Windows下的setenv.bat
)将其添加到类路径:字符串
注意:类路径条目
${CATALINA_HOME}/log4j/*
是一个类路径通配符,它包括${CATALINA_HOME}/log4j
中的所有jar,但不包括这个目录本身。