在 Tomcat 中设置 Log4j 的系统属性

Setting system properties for Log4j in Tomcat

由此article,要启用 Log4j 1.2 桥,您应该

  1. 将系统属性“log4j1.compatibility”设置为值“真”。然后,Log4j 2 会将 log4j.properties、log4j-test.properties、log4j.xml 和 log4j-test.xml 添加到它在 class 路径上搜索的配置文件中。
  2. 将 Log4j 1 系统 属性“log4j.configuration”设置为 log4j 1 配置文件的位置。这些文件的文件扩展名必须为“.properties”或“.xml”。

但是如果我的class在Tomcat8.5下是运行,如何设置系统属性?

首先你需要了解什么是系统属性。检查这个

然后,如果你关心的只是如何添加一个 system property on tomcat 像经典的 ram 增量,你只需要添加 key=valueJAVA_OPTSCATALINA_OPTS tomcat:

的一些脚本
-Dlog4j1.compatibility=true

如果您不想更改某些默认 tomcat 文件,您可以在 bin 文件夹中创建 setenv.sh 并添加如下内容:

#!/bin/sh

MIN_MEMORY="384m"
MAX_MEMORY="768m"
LOG4J_BRIDGE="-Dlog4j1.compatibility=true"

JAVA_OPTS="-Xms${MIN_MEMORY} -Xmx${MAX_MEMORY} ${LOG4J_BRIDGE}  ${JAVA_OPTS}"

基本上 tomcat 告诉我们:如果您想添加、更改或覆盖特殊 tomcat 设置,请将它们添加到文件 setenv.sh 中,我将在启动前加载该变量.

这里有一些 setenv.sh 示例,可以查看更多特殊的 java/tomcat 系统属性和环境变量:

只要 Log4j 文档说 “系统属性”,它实际上指的是任何可用的 属性 源(参见 System properties section)。这给了你相当多的可能性。

如果要为所有 Java 应用程序全局设置 log4j.configuration ,请设置环境变量 LOG4J_CONFIGURATION.

如果您想为 Tomcat 上的所有应用程序 运行 设置它,请通过以下任一方式设置 Java 系统 属性:

  • 一样将 -Dlog4j.configuration=... 选项传递给 JVM。
  • 将系统 属性 添加到 $CATALINA_BASE/conf/catalina.properties,它是由 Tomcat 提供的,就在它设置了自己的日志系统之后(参见 ),
  • 将系统 属性 添加到 Tomcat 的服务器类路径中的 log4j2.system.properties 文件(例如 $CATALINA_BASE/lib/log4j2.system.properties),该文件由 Log4j 在启动时获取(参见source code)。将这样的文件放在您的应用程序中是一种不好的做法,因为文件的内容最终会出现在 Java 的系统属性中。

如果您只想为 您的应用程序设置它,请将它放在应用程序类路径中的 log4j2.component.properties 文件中。

提醒一下。如果您 运行 Tomcat 作为 Windows 中的一项服务,您可以在 tomcat8w.exe 应用程序中设置 Java 选项。