java – Log4j记录到log4j.log而不是指定的文件名

我对log4j很新,所以请保持温和.但这是正在发生的事情,我不知道为什么:它正确记录到文件,但创建的日志的文件名似乎是错误的.

这是我的log4j配置:

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

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

<appender name="console" class="org.apache.log4j.ConsoleAppender">
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] %m%n"/>
    </layout>
</appender>


<appender name="file" class="org.apache.log4j.FileAppender">
    <param name="File" value="log/messagecount.log" />
    <param name="Append" value="true" />
    <layout class="org.apache.log4j.PatternLayout">
        <param name="ConversionPattern" value="[%d{HH:mm:ss,SSS}] [%-5p] (%t) [%c{1}] - %m%n"/>
    </layout>           
 </appender>    

<root>
    <level value="debug"/>      
    <appender-ref ref="file"/>
    <!-- <appender-ref ref="rolling"/> -->
</root>

</log4j:configuration>

它在日志文件夹下创建log4j.log文件,而不是messagecount.log文件.
这种价值属性不符合我的想法吗?

这是我启动记录器的方式:

类级变量:

private static Logger logger = Logger.getLogger( MessageCount.class );

和init函数:

private void initLogger() throws IOException {

    Properties props = new Properties();
    props.load(getClass().getResourceAsStream("/log4j.xml"));
    PropertyConfigurator.configure(props);

    logger.info( "----------Logger init-----------" ) ;

 //     logger.debug("Sample debug message");
 //     logger.info("Sample info message");
 //     logger.warn("Sample warn message");
 //     logger.error("Sample error message");
 //     logger.fatal("Sample fatal message");

}

log4j.xml配置文件位于我的src文件夹的根目录中.

谢谢

最佳答案 适合我.

尝试将-Dlog4j.debug = true添加到您的JVM参数中,以获取有关log4j正在执行的操作以及为何将其记录到log4j.log的更多信息.

点赞