4

我使用 Log4j 编写一些日志我的程序。我在这个网站上找到并阅读了许多问题和答案,但我无法解决我的问题。

这是我的代码:

1.log4j.xml

<appender name="rollingfileAppender" class="org.apache.log4j.DailyRollingFileAppender">
    <param name="append" value="true"/>
    <param name="file" value="logs/process.log"/>
    <param name="DatePattern" value="'.'yyyy-MM-dd-HH"/>
    <layout class="org.apache.log4j.PatternLayout">
       <param name="ConversionPattern" value="%d{yyyy-MM-dd HH:mm:ss:SSS} %-5p [%c{1}] %m%n"/>
    </layout>
</appender>
<root>
    <level value="DEBUG"/>
    <appender-ref ref="rollingfileAppender"/>
    <appender-ref ref="stdout"/>
</root>

2.我的java代码

package TestPacket;

import org.apache.log4j.Logger;
import org.apache.log4j.xml.DOMConfigurator;


public class TestLog4jXML {
    static Logger logger = org.apache.log4j.Logger.getLogger(TestLog4jXML.class.getName());
    public TestLog4jXML() {
    }
    public static void main(String[] args) {
        try {
            DOMConfigurator.configure("log4j1.xml");
            logger.trace("Entering application.");
            logger.debug("Debug");
            logger.info("info");
            logger.warn("warn");
            logger.error("error");
            logger.fatal("fatal");
            lungtng();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    public static void lungtng()
    {
        logger.fatal("some text here");
        logger.info("hello picaso");
    }
}

我用eclipse、windows os运行我的程序。但日志文件名只有:process.log不是每日格式:process.log.yyyy-MM-dd-HH

谁能给我解释一下?

4

2 回答 2

8

看来,如果您正在运行 Windows,这是一个已知的错误:

见这里:http ://do.whileloop.org/2014/02/14/log4j-rolling-file-appenders-in-windows/

见这里:https ://issues.apache.org/bugzilla/show_bug.cgi?id=29726

还有这里: http: //www.coderanch.com/t/424837/java/java/Log-log-file-rolled-day

解决方案似乎是在这里使用附加功能:http: //logging.apache.org/log4j/extras/

尝试使用定义了正确策略的附加程序:

http://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/RollingFileAppender.html

于 2014-09-26T18:54:04.270 回答
4

org.apache.log4j.DailyRollingFileAppender 将为每天、每小时或每分钟创建新的日志文件,但当前日志的文件名将始终采用您在“文件”参数中指定的格式。在您的示例中,它是“process.log”。前几个小时的日志文件名将采用“process.log.yyyy-MM-dd-HH”格式。

于 2012-10-26T10:19:13.407 回答