Java log4j仅在控制台中打印致命和错误消息,但不显示信息/跟踪

Java log4j仅在控制台中打印致命和错误消息,但不显示信息/跟踪,java,log4j,log4j2,Java,Log4j,Log4j2,我用JAVA创建了下面的basic程序,用log4j在控制台中显示日志消息 import org.apache.logging.log4j.*; import org.apache.logging.*; public class Test { public final static Logger log=LogManager.getLogger(Test.class.getName()); public static void main(String[] args) {

我用JAVA创建了下面的basic程序,用log4j在控制台中显示日志消息

import org.apache.logging.log4j.*;
import org.apache.logging.*;
public class Test {
    public final static Logger log=LogManager.getLogger(Test.class.getName());
    public static void main(String[] args) {

        log.log(Level.TRACE,"Testing");
        
        
        
        if(log.isTraceEnabled())
            System.out.println("Trace Enabled");
        else
            System.out.println("Trace not Enabled");
         log.trace("Entering Log4j Example.");

        log.info("Started");
        log.fatal("Error occured");
        log.error("Dkjdsfh");

        log.debug("Debugging");
        log.info("Success");
        log.warn("Warning");
    
    }
}
但是,上面的代码只显示错误/致命消息,其他日志消息不显示在控制台中。下面是我的log4j.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
  <!-- Define custom levels before using them for filtering below. -->
  <CustomLevels>
    <CustomLevel name="DIAG" intLevel="350" />
    <CustomLevel name="NOTICE" intLevel="450" />
    <CustomLevel name="VERBOSE" intLevel="550" />
  </CustomLevels>
 
  <Appenders>
    <Console name="Console" target="SYSTEM_OUT">
      <PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
    </Console>
    <File name="MyFile" fileName="logs/app.log">
      <PatternLayout pattern="%d %-7level %logger{36} - %msg%n"/>
    </File>
  </Appenders>
  <Loggers>
    <Root level="trace">
      <!-- Only events at DIAG level or more specific are sent to the console. -->
      <AppenderRef ref="Console" level="diag" />
      <AppenderRef ref="MyFile" level="trace" />
    </Root>
  </Loggers>
</Configuration>
我的程序的输出:

Trace not Enabled
16:55:40.104 [main] FATAL Test - Error occured
16:55:40.107 [main] ERROR Test - Dkjdsfh
谁能帮我一下我哪里做错了? 提前感谢。

您可以将自定义“诊断”级别设置为350。350低于INFO(400),因此控制台上不显示INFO、DEBUG和TRACE级别

如果检查文件输出,它应该包含所有内容

OFF     0
FATAL   100
ERROR   200
WARN    300
INFO    400
DEBUG   500
TRACE   600
更改
intLevel
或将不同的级别传递给appender


请参见

您正在配置要实际记录的级别。感谢您检查。我已删除了自定义级别,但输出仍然相同,``我的根级别设置正确吗?
OFF     0
FATAL   100
ERROR   200
WARN    300
INFO    400
DEBUG   500
TRACE   600