FileAppender和RollingFileAppender
FileAppender和RollingFileAppender是log4cpp中最常用的两个Appender,其功能是将日志写入文件中。它们之间唯一的区别就是前者会一直在文件中记录日志(直到操作系统承受不了为止),而后者会在文件长度到达指定值时循环记录日志,文件长度不会超过指定值(默认的指定值是10M byte)。
FileAppender的创建函数如下:
/*************************************************************************
> File Name: rf_test.cpp
> Author:
> Mail:
> Created Time: Mon 27 Jul 2015 06:22:18 AM PDT
************************************************************************/
#include<iostream>
#include<log4cpp/Category.hh>
#include<log4cpp/FileAppender.hh>
#include<log4cpp/Priority.hh>
#include<log4cpp/PatternLayout.hh>
#include<log4cpp/RollingFileAppender.hh>
using namespace std;
using namespace log4cpp;
int main(int argc, char *argv[]) {
//创建自定义布局对象
PatternLayout *pattern_layout1 = new PatternLayout();
pattern_layout1->setConversionPattern("%d: %p %c %x: %m%n");
PatternLayout *pattern_layout2 = new PatternLayout();
pattern_layout2->setConversionPattern("%d: %p %c %x: %m%n ");
Appender *fileAppender = new FileAppender("fileAppender","mylog.txt");
fileAppender->setLayout(pattern_layout1);
RollingFileAppender *rollfileAppender =
new RollingFileAppender("rollfileAppender","myrolllog.txt",5*1024,1);
rollfileAppender->setLayout(pattern_layout2);
Category &root = Category::getRoot().getInstance("RootName");
root.addAppender(fileAppender);
root.addAppender(rollfileAppender);
root.setPriority(log4cpp::Priority::DEBUG);
for(int i = 0; i<100; i++) {
string error;
ostringstream oss;
oss << i << ":Root Error Message!";
error = oss.str();
root.error(error);
}
Category::shutdown();
return 0;
}
运行后目录下会多处日志文件:
日志文件格式如图: