是否通过JVM参数配置log4j?

fiei3ece  于 2022-11-06  发布在  其他
关注(0)|答案(9)|浏览(121)

我必须设置/传递哪些变量作为JVM的参数才能使log4j正常运行?我所说的正常是指不向控制台抱怨和打印。我能看一个典型的例子吗?
注意:我需要避免log4j.properties在应用程序中创建www.example.com文件。

at0kjp5o

at0kjp5o1#

您是否有log4j配置文件?只需使用

-Dlog4j.configuration={path to file}

其中,{文件路径}应以file:作为前缀

**编辑:**如果您正在使用log4j 2,则需要使用

-Dlog4j.configurationFile={path to file}

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

ggazkfy8

ggazkfy82#

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

-Dlog4j.configuration={path to file}

如果文件不在类路径中(在Tomcat中为WEB-INF/classes),而是在磁盘上的某个位置,请使用file:,如

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

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

hjzp0vay

hjzp0vay3#

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

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

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

cidc1ykv

cidc1ykv4#

我知道这个问题已经得到了回答,但因为你说,这并不完全是你所寻找的,我想指出以下替代方案:
您也可以使用组态类别来取代属性或xml档案。

-Dlog4j.configuratorClass=com.foo.BarConfigurator

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

apeeds0o

apeeds0o5#

自2015年以来,Log4J 1.x已经达到了EOL
从Log4J 2.x开始,JVM选项应为-Dlog4j.configurationFile=<filename>

  • P.S. <filename>可能是相对于类路径的文件,没有其他答案中建议的file:。*
rseugnpd

rseugnpd6#

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

xiozqbni

xiozqbni7#

相对路径也可以:

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
hgqdbh6s

hgqdbh6s8#

如果您使用的是gradle。您可以应用'application'插件并使用以下命令

applicationDefaultJvmArgs = [
             "-Dlog4j.configurationFile=your.xml",
                              ]
bzzcjhmw

bzzcjhmw9#

显示页面(Log4j 2-自动配置)Log4j 2需要:
-Dlog4j2.configurationFile=<path to file>
Log4j将检查“log4j2.configurationFile”系统属性,如果已设置,则将尝试使用与文件扩展名匹配的ConfigurationFactory加载配置。请注意,这并不限于本地文件系统上的某个位置,还可以包含URL。
取自:Log4j 2-自动配置

相关问题