log4j错误转到INFO.log

时间:2014-02-10 07:47:45

标签: log4j

我有一个log4j.xml和一个scala文件。我用slf4j。

这是xml文件

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

<appender name="error" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="logs/config-server/config-server-error.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <param name="Threshold" value="error"/>
    <param name="Append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
    </layout>
</appender>

<appender name="info" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="logs/config-server/config-server-info.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <param name="Threshold" value="info"/>
    <param name="Append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
    </layout>
</appender>

<appender name="debug" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="File" value="logs/config-server/config-server-debug.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd"/>
    <param name="Threshold" value="debug"/>
    <param name="Append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
    </layout>
</appender>

<root>
    <priority value="debug"/>
    <appender-ref ref="info"/>
    <appender-ref ref="error"/>
    <appender-ref ref="debug"/>
</root>

但是当我将错误记录为

logger.error("Error")

该错误转到error.log文件。但它也转到info.log文件。有人可以帮我把这件事弄错。

1 个答案:

答案 0 :(得分:1)

我使用以下配置,并能够在单独的日志文件中查看日志消息

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="error" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="logs/config-server/config-server-error.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <param name="Threshold" value="error"/>
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
    </layout>
    </appender>
    <appender name="info" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="logs/config-server/config-server-info.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <param name="Threshold" value="info"/>
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <appender name="debug" class="org.apache.log4j.DailyRollingFileAppender">
        <param name="File" value="logs/config-server/config-server-debug.log"/>
        <param name="DatePattern" value="'.'yyyy-MM-dd"/>
        <param name="Threshold" value="debug"/>
        <param name="Append" value="true" />
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%d{DATE} %-5p %c{1} - %m%n"/>
        </layout>
    </appender>
    <root>
        <priority value="debug"/>    
    </root>
    <logger name="debug">
        <level value="debug"/>
        <appender-ref ref="debug" />
    </logger>
    <logger name="info">
        <level value="info"/>
        <appender-ref ref="info" />
    </logger>
    <logger name="error">
        <level value="error"/>
        <appender-ref ref="error" />
    </logger>
</log4j:configuration>

这就是我使用记录器的方式

import org.apache.log4j.Logger;
public class TestLogger {
    private static Logger debugLog = Logger.getLogger("debug");
    private static Logger infoLog = Logger.getLogger("info");
    private static Logger errorLog = Logger.getLogger("error");
    public static void main(String[] args) {
        debugLog.debug("Debug message");
        infoLog.info("Info message");
        errorLog.error("Error message");        
    }
}
相关问题