Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用XML文件(log4j2.XML)配置log4j2_Java_Eclipse_Log4j - Fatal编程技术网

Java 使用XML文件(log4j2.XML)配置log4j2

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

我想使用新的log4j2-Java日志框架。一切正常,但我从一小时后就尝试加载一个自定义配置文件来配置日志记录(如日志级别)

这是我的log4j2.xml:

<?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"