Log4j DailRollingFileAppender不工作
我使用Log4j来编写我的程序的一些日志。 我在这个网站上找到并阅读了很多问题和答案,但我无法解决我的问题 这是我的代码: 1。log4j.xmlLog4j DailRollingFileAppender不工作,log4j,rollingfileappender,Log4j,Rollingfileappender,我使用Log4j来编写我的程序的一些日志。 我在这个网站上找到并阅读了很多问题和答案,但我无法解决我的问题 这是我的代码: 1。log4j.xml <appender name="rollingfileAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="append" value="true"/> <param name="file" value="log
<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>
我用eclipse和windows操作系统运行我的程序。
但日志文件名仅为:process.log不是每日格式:process.log.yyyy-MM-dd-HH
谁能给我解释一下呢?org.apache.log4j.DailyRollingFileAppender将为每天、每小时或每分钟创建新的日志文件,但当前日志的文件名始终采用您在“file”参数中指定的格式。在您的示例中,它是“process.log”。前几个小时的日志文件名格式为“process.log.yyyy MM dd HH”。如果您运行的是windows,这可能是一个已知的错误: 请看这里: 请看这里: 还有这里: 解决方案似乎是在这里使用附加功能: 请尝试在定义了正确策略的情况下使用此附加程序:
是的,我想每小时记录一次。但是每次我运行这个程序都不会有任何变化。你能复制我的代码并在你的电脑上运行吗?实际上这是错误的。通过正确配置
DailRollingFileAppender
,您还可以让它每分钟旋转一次。@Isaac哦,我明白了。为我的愚蠢道歉。我以前没有读过这种行为。appender类的名称确实有误导性。@Sonrobby除了缺少“stdout”appender之外,你的代码在我的电脑上运行得非常好。非常感谢@Artem Shafranov,我已经理解了这个问题。
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");
}
}