【发布时间】: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
有人可以帮我解决我做错的地方吗? 提前致谢。
【问题讨论】:
-
您正在配置要实际记录的级别。