当使用log4j2跟踪消息时,会记录到控制台,而不记录任何其他内容。
2016-05-05 12:28:33,023 ERROR loggers Loggers has no parameter that matches element AppenderRef
2016-05-05 12:28:33,023 WARN No Root logger was configured, creating default ERROR-level Root logger with Console appender
以下是运行时在类路径中出现的代码和log4j2.xml。
package com.example.log4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class LogTester {
public static void main(String[] args) {
Logger logger = LogManager.getLogger(LogTester.class);
logger.trace("Hello");
logger.debug("Hello");
logger.info("Hello");
logger.warn("Hello");
logger.error("Hello");
logger.fatal("Hello");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.example.log4j" level="DEBUG" additivity="false" />
<AppenderRef ref="STDOUT" />
</Loggers>
</Configuration>
在pom.xml中,添加了以下依赖项,Java版本为1.6
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.2</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.2</version>
</dependency>
<dependency>
答案 0 :(得分:1)
log4j2.xml文件中存在错误。
<Loggers>
<Logger name="com.example.log4j" level="DEBUG" additivity="false" />
<AppenderRef ref="STDOUT" />
</Loggers>
应该是
<Loggers>
<Logger name="com.example.log4j" level="DEBUG" additivity="false">
<AppenderRef ref="STDOUT" />
</Logger>
</Loggers>
log4j确实需要一个xsd来验证xml配置。
答案 1 :(得分:0)
您的log4j2.xml
文件的内容如下:
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn">
<Appenders>
<Console name="STDOUT" target="SYSTEM_OUT">
<PatternLayout pattern="%m%n" />
</Console>
</Appenders>
<Loggers>
<Logger name="com.example.log4j" level="DEBUG" additivity="false">
<AppenderRef ref="STDOUT" />
</Loggers>
</Configuration>
除了上面,您还必须添加一个 root 记录器,否则Log4j会为您创建一个记录到控制台的记录器。
为此,您需要在<Loggers>
标签内添加以下代码。
<Loggers>
<Root level="debug">
<AppenderRef ref="YOUR_APPENDER_REFERENCE" />
</Root>
</Loggers>
我建议添加一个RollingFile
作为Appender,以将日志文件输出到目录中的文本文件,在控制台上记录大量数据是没有用的。