Java 使用XML文件(log4j2.XML)配置log4j2
我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别) 这是我的log4j2.xml:Java 使用XML文件(log4j2.XML)配置log4j2,java,eclipse,log4j,Java,Eclipse,Log4j,我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别) 这是我的log4j2.xml: <?xml version="1.0" encoding="UTF-8"?> <configuration status="OFF"> <appenders> <Console name="Console" target="SYSTEM_OUT"> <Patter
<?xml version="1.0" encoding="UTF-8"?>
<configuration status="OFF">
<appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
</appenders>
<loggers>
<root level="error">
<appender-ref ref="Console"/>
</root>
</loggers>
</configuration>
无法帮助我,我希望您能帮助我让Log4j 2使用我的配置文件。重要提示:确保配置文件的名称为log4j2.xml
(注意句点之前的2
),而不是Log4j.xml
我猜没有发生任何事情,因为没有使用错误级别记录任何内容。您可能希望尝试添加另一个记录器,如下所示:
<logger name="com.foo.Bar" level="trace">
<appender-ref ref="Console"/>
</logger>
将LOG4J2.XML放入项目的根文件夹src/main 我的2美分:
软件系统:log4j2、NetBeans和TestNG
我也有同样的问题,但是测试环境
默认情况下,(即在src/中的log4j2.xml文件中),日志级别设置为error。但是在运行测试时,我希望日志记录是跟踪的。当然,还记录了一些或多或少的硬编码文件
就是说,本来我是这样做的,
public class someTestClass {
static final Logger log=LogManager.getLogger("test.someTestClass");
......
@Test
public void SomeMethod(){
System.setProperty("log4j.configurationFile", "resources/log4j2_conf.xml");
log.trace("This will not show because the default logging level is ERROR
and the resources/log4j2_conf.xml is not loaded");
}
问题在于,在执行System.setProperty指令时,log4j已经被设置好(也就是说,静态最终记录器日志=…将首先被执行)
我所做的就是像这样使用@BeforeClass:
public class someTestClass {
Logger log;
@BeforeClass
public void setLogger(){
SetEnv.SetEnvironment();
log = LogManager.getLogger("TestRealClientRealServer");
}
......
@Test
public void SomeMethod(){
log.trace("This will show, because in log4j2_conf.xml
the root level is set to TRACE");
}
}
顺便说一句,资源/可以放在测试包中,这样您就不会发布“测试”log4j设置
希望有帮助除了在类路径根文件夹中使用默认配置文件log4j2.xml(或log4j2 test.xml),您还可以使用此系统属性指定配置文件路径(在java命令行中使用-D)
eclipse用户的提示:
右键单击项目并单击“刷新”。确保可以在eclipse中看到log4j2.xml文件。
完整答案如下:
提示:
使用自定义log4j文件。(而不是默认的“log4j2.xml”thingie)。在某些情况下,具有多个配置可能很有用
如果有人使用maven并希望配置log4j2,请在pom.xml中输入以下内容:
<systemProperties>
<property>
<name>/log4j.configuration</name>
<value>.../../Foo-log4j.xml</value>
</property>
</systemProperties>
这是解决“如果正在读取日志conf文件,我不知道”问题的一个更有价值的技巧。使用选项-Dlog4j.debug
启动jvm。当它启动时,它将打印它试图读取的所有日志配置文件。它将一一列出。最后一个显示的是系统使用的
如果您在JEE服务器中,可能需要将其放在“jvm.options”文件中的某个位置。如果是jar,只需使用-Dlog4j.debug运行java。您是否介意通过评论提供一些关于我答案的反馈?这有帮助吗?或者除了错误之外,您还没有看到其他级别的日志消息吗?@fentonrackshell:很高兴提供帮助!最后把log4j2.xml
放在哪里?嗨,我需要更多的信息,我按照建议添加了配置,但它仍然不工作。问题是什么?@BalajiBoggaramRamanarayan这是很久以前的事了,但是把它放在pom中不允许它找到xml文件。
public class someTestClass {
Logger log;
@BeforeClass
public void setLogger(){
SetEnv.SetEnvironment();
log = LogManager.getLogger("TestRealClientRealServer");
}
......
@Test
public void SomeMethod(){
log.trace("This will show, because in log4j2_conf.xml
the root level is set to TRACE");
}
}
log4j.configurationFile='xxxx/xxx/xxx'
<systemProperties>
<property>
<name>/log4j.configuration</name>
<value>.../../Foo-log4j.xml</value>
</property>
</systemProperties>
-Dlog4j.configuration="Foo-log4j.xml"