如何使用Tomcat 8.5.15

时间:2018-03-15 12:35:50

标签: 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

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

ERRORMESSAGE:

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

任何想法为什么LogManager仍然缺失或者我应该使用其他一些罐子。在另一个消息中,他们说juli.jar和extras,但在他们的情况下,他们有更旧的Tomcat版本,6或7。

4 个答案:

答案 0 :(得分:1)

我知道现在回答这个问题有点晚了,但是我相信它可以帮助像我这样苦苦挣扎的人尝试配置tomcat以便它使用lo4j。 在过去的三天里,我一直在从事类似的工作,但我发现tomcat网站提供的extras文件夹不是我所需要的。但是,您仍然可以使用Maven来抓住它们。我能够配置tomcat,以便它使用提到的jar文件(tomcat-extras-juli.jar和tomcat-extras-juli-adapters.jar)。只需记住包括VM参数-Dlog4j.debug即可使您的生活更轻松并更快地发现错误。

Maven回购:https://mvnrepository.com/artifact/org.apache.tomcat.extras/tomcat-extras-juli-adapters

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

答案 1 :(得分:1)

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

这最容易做到:

  1. 在 catalina home 中创建一组名为 log4j2/lib 的目录和 log4j2/conf。

  2. 放置 log4j2-api-2.x.x.jarlog4j2-core-2.x.x.jarlog4j2-appserver-2.x.x.jar 在 log4j2/lib 目录中。

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

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


您可以通过更改环境变量 LOGGING_MANAGER 来强制使用 JUL 框架的应用程序使用 log4j2 格式。您可以通过添加 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

答案 2 :(得分:0)

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

这些罐子存在于CATALINA_HOME/bin目录中并负责  tomcat的初始化,包括日志记录。

CATALINA_HOME/cataline.bat中,如果是Windows,您可以找到以下代码 -

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

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

答案 3 :(得分:0)

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\

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