java - 如何使用 Tomcat 8.5.15 配置 log4j2

标签 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.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:org.apache.logging.log4j.jul.LogManager

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

最佳答案

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

这最容易通过以下方式完成:

  1. 在 catalina 主目录中创建一组名为 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


您可以强制使用 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 桥中.


引用:

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

关于java - 如何使用 Tomcat 8.5.15 配置 log4j2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49299649/

相关文章:

java - 字节数组到短数组并在java中再次返回

java - 如何避免使用 log4j 在服务器重启时将 header 插入文件?

java - 仅当从 servlet 访问时,带有日语的自定义 404 错误页面在 Tomcat 5 上变得不可读

java - 当依赖项使用不同的日志记录时会发生什么?

java - 在 spring boot 中禁用自动日志记录配置

java - 持久化实体时出现 NullPointerException

java - 如何让translate()方法接收字符串或与字符串类型兼容的给定列表?

java - Struts - <html :errors/> to display error messages in Jsp? 的替代方案

android - 我应该使用什么作为服务器来满足以下要求?

java - Tomcat 上的 HTTPClient