2009-04-22 121 views
103

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

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

回答

121

你有log4j配置文件吗?刚开始使用

-Dlog4j.configuration={path to file} 

其中{文件路径}引用它应该file:

+0

Brian - 并不完全是我在找的东西,但我认为这是将文件移动到我的应用程序并通过JVM参数设置属性之间的妥协折中。 – jconlin 2009-04-23 14:21:37

+0

我认为,随着应用程序变得越来越复杂(如果会的话),随着您对应用程序的更多配置,文件变得更易于管理。但是我承认我在这里猜测你的用例。 – 2009-04-23 15:35:23

+0

对于logback.xml,-Dlogback.configuration = {文件路径}不起作用。任何建议? – 2013-10-22 12:51:53

10

一般前缀,只要你的log4j.properties文件在类路径,Log4j的应该只是自动把它捡起来,在JVM启动。

17

我知道这已经回答了,但因为你说,这不是你在寻找什么,我想指出以下几点可供选择:

您也可以使用配置类代替属性或xml文件。

-Dlog4j.configuratorClass=com.foo.BarConfigurator 

详见http://logging.apache.org/log4j/1.2/manual.html

146

的解决方案是使用下面的JVM的说法:

-Dlog4j.configuration={path to file} 

如果文件没有在classpath(在WEB-INF/classes在Tomcat中的情况下),但放到你的磁盘上,使用file:,像

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

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

2

迟到了作为2015年以来,Log4J的1.x中已经达到了EOL

Log4J的2.X起JVM option应该-Dlog4j.configurationFile=<filename>


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