下面是我的配置还有测试代码。
望有大神指点:
配置文件名:log.conf
log4cplus.rootLogger=DEBUG,LoggerDRoot
log4cplus.appender.LoggerDRoot=log4cplus::DailyRollingFileAppender
log4cplus.appender.LoggerDRoot.File=./LogFiles/DeBug.log
log4cplus.appender.LoggerDRoot.Schedule=MINUTELY
log4cplus.appender.LoggerDRoot.MaxBackupIndex=3
log4cplus.appender.LoggerDRoot.Append=true
log4cplus.appender.LoggerDRoot.MaxFileSize=10MB
log4cplus.appender.LoggerDRoot.layout=log4cplus::PatternLayout
log4cplus.appender.LoggerDRoot.layout.ConversionPattern=NDC:[%x] - %D{%y/%m/%d %H:%M:%S:%q} - %m [%l]%n
测试代码:
int main()
{
PropertyConfigurator::doConfigure("log.conf");
Logger p_debug_logger = Logger::getRoot();
for (int i = 0; i < 10000; ++i)
{
LOG4CPLUS_DEBUG(p_debug_logger, "LogCount --- " << i);
cout << "LogCount --- " << i << endl;
Sleep(1000);
}
system("pause");
return 0;
}
理论上应该是最多只会有 3 个 日志文件吧。
但结果成成了很多 log 文件, 我发截图了。
log4cplus.appender.LoggerDRoot=log4cplus::DailyRollingFileAppender
这一句设置,设为 每天一个日志文件了。。。 改为 : RollingFileAppender
不能用 RollingFileAppender 啊, 兄弟, 这个是当 Log 文件到了一定大小之后,产生新文件的。
我现在已经能 1 分钟产生一个新 log 了, 就是 到 3 个之后, 新出现的 log 无法覆盖第一个。我想要的设置效果是:这个 LogFiles 文件夹中最多只会有 3 + 1 个 日志文件。
确实应该是改为RollingFileAppender ,log4cplus.appender.LoggerDRoot.MaxBackupIndex=3这个配置回绕的时候只是简单在文件后面加上.1 , .2达到更改文件名的目的,你可以看看DailyRollingFileAppender生成的文件名都是以日期区别的
那么 这一句:
SharedAppenderPtr p_file_appender_debug(new DailyRollingFileAppender("LogFiles/DeBug.log", \
MINUTELY, true, 3));
中的第 4 个参数的作用时什么呢?
我也碰到这个问题了,进源码调试发现根本没有实现按时间频率生成日志的清理策略,第四个参数是指你一个时间频度单位内多次重启程序最多拆分的日志个数。日志清理还是得自己手动处理