Java 使用log4j记录到不同的文件

Java 使用log4j记录到不同的文件,java,logging,log4j,Java,Logging,Log4j,我试图在java应用程序中使用log4j。我只需要将DEBUG日志写入DEBUG.log文件,只需将INFO日志写入INFO.log文件,只需将ERROR日志写入ERROR.log文件。我设法将调试和错误日志写入相应的文件,但信息不起作用。我不明白为什么它不起作用。我想请求您的帮助,是否可以同时只向控制台写入调试和信息日志。 结果 为每个级别的日志(debug.log、info.log和error.log)创建3个文件 调试日志写入DEBUG.log,错误日志写入ERROR.log,但信息日志既

我试图在java应用程序中使用
log4j
。我只需要将
DEBUG
日志写入DEBUG.log文件,只需将
INFO
日志写入INFO.log文件,只需将
ERROR
日志写入ERROR.log文件。我设法将调试和错误日志写入相应的文件,但信息不起作用。我不明白为什么它不起作用。我想请求您的帮助,是否可以同时只向控制台写入调试和信息日志。 结果

为每个级别的日志(debug.log、info.log和error.log)创建3个文件 调试日志写入DEBUG.log,错误日志写入ERROR.log,但信息日志既不写入INFO.log,也不写入DEBUG.log或ERROR.log


我稍微修改了一下,效果很好

<?xml version="1.0" encoding="UTF-8"?>



似乎一切正常。将消息记录为
INFO
级别时发生了什么?是否根本没有创建文件?如果创建了它,它是不是在那里记录了任何日志,还是记录了不应该记录的日志?请添加更多详细信息。我在问题中添加了额外信息。真的如我所说
<?xml version="1.0" encoding="UTF-8"?>
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
    <param name="target" value="System.out"/>
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern"
               value="%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n"/>
    </layout>
</appender>

<appender name="info" class="org.apache.log4j.RollingFileAppender">

    <param name="Threshold" value="INFO" />
    <param name="MaxFileSize" value="3KB" />
    <param name="MaxBackupIndex" value="10" />
    <param name="File" value="D:\\info.txt" />

    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n" />
    </layout>

    <filter class="org.apache.log4j.varia.LevelMatchFilter">
        <param name="LevelToMatch" value="info" />
        <param name="AcceptOnMatch" value="true"/>
    </filter>
    <filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>

<appender name="debug" class="org.apache.log4j.RollingFileAppender">

    <param name="Threshold" value="DEBUG" />
    <param name="MaxFileSize" value="3KB" />
    <param name="MaxBackupIndex" value="10" />
    <param name="File" value="D:\\debug.txt" />


    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n" />
    </layout>

    <filter class="org.apache.log4j.varia.LevelMatchFilter">
        <param name="LevelToMatch" value="debug" />
        <param name="AcceptOnMatch" value="true"/>
    </filter>
    <filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>

<appender name="error" class="org.apache.log4j.RollingFileAppender">

    <param name="Threshold" value="ERROR" />
    <param name="MaxFileSize" value="3KB" />
    <param name="MaxBackupIndex" value="10" />
    <param name="File" value="D:\\error.txt" />


    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="%d{MMM-dd-yyyy HH:mm:ss:SSS} %-5p %m%n" />
    </layout>

    <filter class="org.apache.log4j.varia.LevelMatchFilter">
        <param name="LevelToMatch" value="error" />
        <param name="AcceptOnMatch" value="true"/>
    </filter>
    <filter class="org.apache.log4j.varia.DenyAllFilter" />
</appender>

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