146

我必须设置/传递哪些变量作为 JVM 的参数才能使 log4j 正常运行?正确地说,我的意思是不要抱怨并打印到控制台。我能看一个典型的例子吗?

注意:我需要避免在应用程序中创建 log4j.properties 文件。

4

8 回答 8

180

你有 log4j 配置文件吗?只需使用它来引用它

-Dlog4j.configuration={path to file}

其中 {path to file} 应以file:

编辑:如果您正在使用 log4j2,则需要使用

-Dlog4j.configurationFile={path to file}

取自答案https://stackoverflow.com/a/34001970/552525

于 2009-04-22T20:03:26.533 回答
168

解决方案是使用以下 JVM 参数:

-Dlog4j.configuration={path to file}

如果文件不在类路径中(在WEB-INF/classesTomcat 的情况下)但在磁盘的某个位置,请使用file:,例如

-Dlog4j.configuration=file:C:\Users\me\log4j.xml

更多信息和示例在这里: http: //logging.apache.org/log4j/1.2/manual.html

于 2011-10-28T09:12:26.297 回答
44

这似乎已更改(可能使用 log4j2)为:

-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml

请参阅:https ://logging.apache.org/log4j/2.x/manual/configuration.html

于 2015-11-30T15:23:30.393 回答
21

我知道这已经回答了,但是因为你说,这不是你正在寻找的,我想指出以下替代方案:

您还可以使用配置类而不是属性或 xml 文件。

-Dlog4j.configuratorClass=com.foo.BarConfigurator

有关详细信息,请参阅http://logging.apache.org/log4j/1.2/manual.html

于 2010-02-15T09:17:26.807 回答
12

自 2015 年以来,Log4J 1.x 迟到了,已达到EOL

Log4J 2.x 以后的JVM 选项应该是-Dlog4j.configurationFile=<filename>


PS<filename>可能是相对于类路径的文件,而没有file:其他答案中建议的。

于 2017-11-02T06:07:41.200 回答
11

通常,只要您的 log4j.properties 文件位于类路径中,Log4j 就应该在 JVM 启动时自动获取它。

于 2009-04-23T03:03:43.620 回答
2

相对路径也可以:

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
于 2018-07-26T08:18:30.757 回答
0

如果你正在使用 gradle。您可以应用“应用程序”插件并使用以下命令

  applicationDefaultJvmArgs = [
             "-Dlog4j.configurationFile=your.xml",
                              ]
于 2019-12-28T10:04:21.470 回答