使用XML文件(log4j2.xml)配置Log4j 2

Rub*_*ker 26 java eclipse log4j

我想使用新的Log4J 2 - Java Logging Framework.一切正常,但我尝试了一个小时加载自定义配置文件来配置日志记录(如日志级别).

这是我的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>
Run Code Online (Sandbox Code Playgroud)

我尝试了以下,但没有任何作用:

  • 移动log4j2.xml文件,使其位于默认包中.
  • 将log4j2.xml文件移动到项目中的任何位置
  • 将log4j2.xml文件命名为"log4j.xml"
  • 在项目中创建一个文件夹,将log4j2.xml文件放在那里,并将该文件夹添加到运行时类路径中

由于官方网站无法帮助我,我希望你能帮助我让Log4j 2使用我的配置文件.

And*_*rey 34

重要说明:确保配置文件的名称log4j2.xml(注意2在句点之前)而不是log4j.xml

我的猜测是什么都没发生,因为没有使用错误级别记录任何内容.您可能想尝试添加另一个记录器,如下所示:

<logger name="com.foo.Bar" level="trace">
  <appender-ref ref="Console"/>
</logger>
Run Code Online (Sandbox Code Playgroud)

看起来配置部分可能是一个很好的资源.

要进一步详细说明,您要指定一个级别设置为"error"的记录器:

<root level="error">
  <appender-ref ref="Console"/>
</root>
Run Code Online (Sandbox Code Playgroud)

这意味着只有使用Level.ERROR记录的消息才会显示在日志中.添加限制较少的记录器将允许在日志中显示更多消息.我建议您查看本手册的" 架构"部分(如果向下滚动页面,您将看到解释日志记录级别的表格).或者,您可以只将根记录器的级别更改为跟踪(而不是添加新的记录器)

鉴于您指定的配置,执行下面的代码会产生类似的结果 13:27:50.244 [main] ERROR com.example.Log4j2Tester - testing ERROR level

package com.example;

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Log4j2Tester {
    private static final Logger LOG = LogManager.getLogger(Log4j2Tester.class);

    public static void main(String[] args) {
        LOG.error("testing ERROR level");

//if you change the level of root logger to 'trace'
//then you'll also see something like
//    13:27:50.244 [main] TRACE com.example.Log4j2Tester - exiting application
        LOG.trace("exiting application");
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 最终将“log4j2.xml”放在哪里? (2认同)