我必须设置/传递哪些变量作为 JVM 的参数才能使 log4j 正常运行?正确地说,我的意思是不要抱怨并打印到控制台。我能看一个典型的例子吗?
注意:我需要避免在应用程序中创建 log4j.properties 文件。
你有 log4j 配置文件吗?只需使用它来引用它
-Dlog4j.configuration={path to file}
其中 {path to file} 应以file:
编辑:如果您正在使用 log4j2,则需要使用
-Dlog4j.configurationFile={path to file}
解决方案是使用以下 JVM 参数:
-Dlog4j.configuration={path to file}
如果文件不在类路径中(在WEB-INF/classes
Tomcat 的情况下)但在磁盘的某个位置,请使用file:
,例如
-Dlog4j.configuration=file:C:\Users\me\log4j.xml
更多信息和示例在这里: http: //logging.apache.org/log4j/1.2/manual.html
这似乎已更改(可能使用 log4j2)为:
-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml
请参阅:https ://logging.apache.org/log4j/2.x/manual/configuration.html
我知道这已经回答了,但是因为你说,这不是你正在寻找的,我想指出以下替代方案:
您还可以使用配置类而不是属性或 xml 文件。
-Dlog4j.configuratorClass=com.foo.BarConfigurator
通常,只要您的 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",
]