【问题标题】:log4j printing only FATAL and ERROR message in console, but not displaying INFO/TRACElog4j 在控制台中仅打印 FATAL 和 ERROR 消息,但不显示 INFO/TRACE
【发布时间】:2020-08-31 12:25:06
【问题描述】:

我在 JAVA 中创建了以下基本程序,以使用 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");
    
    }
}

但是,上面的代码只显示 ERROR/FATAL 消息,其他日志消息不显示在控制台中。下面是我的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>

另外,我有以下 jar 文件到构建路径,

log4j-api-2.13.3.jar
log4j-core-2.13.3.

我的程序的输出:

Trace not Enabled
16:55:40.104 [main] FATAL Test - Error occured
16:55:40.107 [main] ERROR Test - Dkjdsfh

有人可以帮我解决我做错的地方吗? 提前致谢。

【问题讨论】:

  • 您正在配置要实际记录的级别。

标签: java log4j log4j2


【解决方案1】:

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

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

OFF     0
FATAL   100
ERROR   200
WARN    300
INFO    400
DEBUG   500
TRACE   600

要么更改intLevel,要么将不同的级别传递给appender。

custom log levels

【讨论】:

  • 感谢您对此进行检查。我已经删除了客户级别,但输出仍然相同,``` 我的根级别设置是否正确?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-14
  • 2021-11-25
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
相关资源
最近更新 更多