我必须设置/传递哪些变量作为 JVM 的参数才能使 Log4j 正常运行?我所说的正确是指不要抱怨并打印到控制台。我可以看一个典型的例子吗?
注意:我需要避免在应用程序中创建
log4j.properties
文件。
你有 log4j 配置文件吗?只需使用
引用即可-Dlog4j.configuration={path to file}
其中{文件路径}应以
file:
为前缀
编辑:如果您正在使用log4j2,则需要使用
-Dlog4j.configurationFile={path to file}
解决方案是使用以下 JVM 参数:
-Dlog4j.configuration={path to file}
如果文件不在类路径中(对于 Tomcat,则位于
WEB-INF/classes
中),而是位于磁盘上的某个位置,请使用 file:
,例如
-Dlog4j.configuration=file:C:\Users\me\log4j.xml
这个配置似乎在Log4j 2中发生了变化:
-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml
参见:https://logging.apache.org/log4j/2.x/manual/configuration.html
我知道这已经得到回答,但因为你说,这并不完全是你正在寻找的,我想指出以下替代方案:
您还可以使用配置类来代替属性或 xml 文件。
-Dlog4j.configuratorClass=com.foo.BarConfigurator
有关详细信息,请参阅 http://logging.apache.org/log4j/1.2/manual.html。
通常,只要您的 log4j.properties 文件位于类路径中,Log4j 就应该在 JVM 启动时自动选取它。
相对路径也可以:
java -Dlog4j.configuration=file:".\log4j.properties" -jar com.your-1.0-SNAPSHOT.jar
或
java -Dlog4j.configuration=file:".\log4j.xml" -jar com.your-1.0-SNAPSHOT.jar
如果你使用的是gradle。您可以应用“应用程序”插件并使用以下命令
applicationDefaultJvmArgs = [
"-Dlog4j.configurationFile=your.xml",
]
根据页面(Log4j2 - 自动配置)Log4j2需要:
-Dlog4j2.configurationFile=<path to file>
Log4j 将检查“log4j2.configurationFile”系统属性,如果设置,将尝试使用与文件扩展名匹配的 ConfigurationFactory 加载配置。请注意,这不限于本地文件系统上的位置,并且可能包含 URL。
我在 weblogic 12 中使用了下面的两个命令,它适用于 log4j2.xml
-Dlog4j.configurationFile=<path to file>
-Dlog4j2.configurationFile=<path to file>
尝试添加以下 JVM 参数:
-Dorg.apache.logging.log4j.level=INFO
来源:
https://medium.com/@kasunbg/change-log4j2-default-logging-level-to-info-b25db8723eb9