簡體   English   中英

如何使用 Tomcat 8.5.15 配置 log4j2

[英]How to configure log4j2 with Tomcat 8.5.15

我在 $CATALINA_HOME/lib 下有 log4j2 jars:

  • 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 中,我有通用的類加載器,即使它已經在 CATALINA_HOME/lib 下,我也嘗試再次添加 log4j-jul-2.10.0.jar,但沒有成功。

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 仍然丟失還是應該使用其他一些 jars 來代替。 在另一條消息中,他們說的是 juli.jar 和 extras,但在他們的情況下,他們有較舊的 Tomcat 版本,6 或 7。

我知道現在回答這個問題有點晚了,但我相信它可以幫助像我一樣努力配置 tomcat 以便它使用 lo4j 的人。 過去 3 天我一直在做類似的事情,我發現 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 之后,我遇到了同樣的問題。 經過快速分析,我發現接口 org.apache.juli.WebAppProperties 未包含在文件 org.apache.catalina.loader.WebappClassLoaderBase 使用的 jar 文件 tomcat-extras-juli.jar 中。 經過更多研究,我意識到 Maven Repo 中包含了 tomcat jar 文件。 我在相同版本的 tomcat(當前為 8.5)下下載了提到的 jar 文件,將這些 jar 插入到我的 tomcat 安裝中,一切都按預期工作。 現在我的 tomcat 版本使用 log4j 而不是 juli。

您只需要將log4j2-apilog4j2-corelog4j2-appserver庫添加到 Tomcat 類路徑中,提供 log4j2 配置文件並從安裝中刪除 $CATALINA_BASE/conf/logging.properties 。

這最容易通過以下方式完成:

  1. 在 catalina home 中創建一組名為 log4j2/lib 和 log4j2/conf 的目錄。

  2. log4j2-api-2.xxjarlog4j2-core-2.xxjarlog4j2-appserver-2.xxjar放在 log4j2/lib 目錄中。

  3. 在 log4j2/conf 目錄中創建名為 log4j2-tomcat.xml、log4j2-tomcat.json、log4j2-tomcat.yaml、log4j2-tomcat.yml 或 log4j2-tomcat.properties 的文件。

  4. 在 tomcat bin 目錄下創建或修改CLASSPATH=$CATALINA_HOME/log4j2/lib/*:$CATALINA_HOME/log4j2/conf以包含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.xxjar橋中。


參考:

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

log4j2 jars必須與bootstrap.jar (tomcat 啟動)和tomcat-juli.jar (日志記錄)一起加載

這些 jars 存在於CATALINA_HOME/bin目錄中,負責 tomcat 的初始化,包括日志記錄。

如果是 Windows,在CATALINA_HOME/cataline.bat中,您將找到以下代碼 -

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"

復制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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM