Log4j日志不工作

5
我已经将log4j这里添加到构建路径中。编写了一个简单的方法来测试日志级别,但它没有在控制台上打印任何内容。
import org.apache.log4j.Level;
import org.apache.log4j.Logger;

public class LoggerLevelTest {

    private static org.apache.log4j.Logger log = Logger
            .getLogger(LoggerLevelTest.class);

    public static void main(String[] args) {
        log.setLevel(Level.WARN);

        log.trace("Trace Message!");
        log.debug("Debug Message!");
        log.info("Info Message!");
        log.warn("Warn Message!");
        log.error("Error Message!");
        log.fatal("Fatal Message!");
    }

}

Log4j.xml

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
    <Properties>
        <Property name="LEVEL">WARN</Property> <!-- default value -->
    </Properties>
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>
    <Loggers>
        <Root level="${sys:LEVEL}">
            <AppenderRef ref="Console" />
        </Root>
    </Loggers>
</Configuration>

实际输出:
log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
log4j:WARN Continuable parsing error 2 and column 30
log4j:WARN Document is invalid: no grammar found.
log4j:ERROR DOM element is - not a <log4j:configuration> element.
log4j:WARN No appenders could be found for logger (LoggerLevelTest).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

预期输出:

Warn Message!
Error Message!
Fatal Message!

上面的示例链接:http://www.tutorialspoint.com/log4j/log4j_logging_levels.htm

将log4j.properties文件放置在您的类路径中。 - AsSiDe
需要其中之一的.xml.properties文件。我已经添加了.xml文件,并且还更改了输出。 - paul
请编辑您的问题,包括您正在使用的.xml文件的内容。鉴于您的输出中根元素名称(Configuration)中的大写字母C,我怀疑这是一个Log4j2配置文件,它无法与Log4j 1.2一起使用。 - Luke Woodward
1
排除掉slf4j,我的问题解决了。 - Davut Gürbüz
3个回答

1

你的配置文件在log4j2格式中,是有效的,但你需要在log4j2.xml中声明你的配置。


1

来晚了。具体来说是关于这个错误:

log4j:ERROR DOM element is - not a <log4j:configuration> element.

我发现改变:
-Dlog4j2.configuration=...

给:

-Dlog4j2.configurationFile=...

修复了问题。

0

我认为你的XML不合法...你的实际输出

log4j:WARN Document root element "Configuration", must match DOCTYPE root "null".
...
log4j:ERROR DOM element is - not a <log4j:configuration> element.

我认为你应该像这样定义你的xml:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">

    <appender name="xyz" ... />

    <root> 
       ...
    </root>

</log4j:configuration>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接