通过JVM参数配置log4j?

jco*_*lin 125 java logging log4j

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

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

30t*_*thh 157

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

-Dlog4j.configuration={path to file}
Run Code Online (Sandbox Code Playgroud)

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

-Dlog4j.configuration=file:C:\Users\me\log4j.xml
Run Code Online (Sandbox Code Playgroud)

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

  • 另一个JVM参数非常方便调试log4j config:`-Dlog4j.debug` (13认同)
  • 对于Logback:`-Dlogback.configurationFile = C:\ logback-test.xml` (2认同)
  • 提及文件的+1(重申Tim说的话.这让我对log4j多次疯狂. (2认同)
  • 是否可以通过此方法使用相对路径? (2认同)

Bri*_*new 154

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

-Dlog4j.configuration={path to file}
Run Code Online (Sandbox Code Playgroud)

其中{path to file}应该以前缀为前缀 file:

  • `{path to file }`需要以`file:`为前缀才能实现. (23认同)
  • 注意是否使用**Log4j 2**作为属性名称和语法更改.请参阅[此答案](http://stackoverflow.com/a/34001970/2245051). (6认同)
  • @ORMapper - 我已经适当修改了 (2认同)

小智 27

这似乎已经改变(可能与log4j2):

-Dlog4j.configurationFile=file:C:\Users\me\log4j.xml
Run Code Online (Sandbox Code Playgroud)

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


Tim*_*the 20

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

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

-Dlog4j.configuratorClass=com.foo.BarConfigurator
Run Code Online (Sandbox Code Playgroud)

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


小智 11

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


Vin*_*non 7

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

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


PS <filename>可能是相对于类路径的文件,而不file:在其他答案的建议.

  • 重要的答案,因为其他答案不再有效。 (2认同)