我使用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
谁可以向我解释这个?
答案 0 :(得分: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/
尝试使用此appender并定义正确的策略:
http://logging.apache.org/log4j/extras/apidocs/org/apache/log4j/rolling/RollingFileAppender.html
答案 1 :(得分:2)
org.apache.log4j.DailyRollingFileAppender将为每天,每小时或每分钟创建新的日志文件,但当前日志的文件名始终采用您在“file”参数中指定的格式。在您的示例中,它是“process.log”。前几个小时的日志文件名格式为“process.log.yyyy-MM-dd-HH”。