项目地址
https://github.com/orocos-toolchain/log4cpp.git
#include "log4cpp/Category.hh"
#include "log4cpp/PatternLayout.hh"
#include "log4cpp/OstreamAppender.hh"
#include <log4cpp/Appender.hh>
#include <log4cpp/FileAppender.hh>
#include <log4cpp/Priority.hh>
#include <log4cpp/RollingFileAppender.hh>
#include <log4cpp/PropertyConfigurator.hh>
int main()
{
log4cpp::PatternLayout* pLayerout = new log4cpp::PatternLayout();
//设置log输出格式 {time}{loglevel}{file}{line}:message
pLayerout->setConversionPattern("{%d{%Y-%m-%d %H:%M:%S.%l}}{%p}: %m%n"); // {time}{loglevel}{file}{line}:message
//Appender 表示一个输出目标
// log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//创建一个Appender;
// fileAppender->setLayout(pLayerout);//将指定的Layout添加到Appender;
log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender(
"rollfileAppender", "rollwxb.log", 1 * 1024, 1); // 超过5k自动回滚,最大文件数为1
rollfileAppender->setLayout(pLayerout);
log4cpp::PatternLayout* pLayerout1 = new log4cpp::PatternLayout();
pLayerout1->setConversionPattern("{%d{%Y-%m-%d %H:%M:%S.%l}}{%p}: %m%n"); // {time}{loglevel}{file}{line}:message
log4cpp::OstreamAppender app("osAppender", &cout);
app.setLayout(pLayerout1);
//一般一个程序都有一个根类别, 如果需要多个类别可以用getinstance
log4cpp::Category& root = log4cpp::Category::getRoot();//从系统中得到Category的根;
// root.addAppender(fileAppender);
root.addAppender(app);
root.addAppender(rollfileAppender);
//设置输出等级
root.setPriority(log4cpp::Priority::ERROR);
for(int i = 0; i < 100; ++i)
{
root.warn("test");
root.error("error");
}
log4cpp::Category::shutdown();
return 0;
}
-----------------------华丽分界线------------------------------------
配置文件加载
设置配置文件如下
#设置log输出的属性 并设置appender 的名称
log4cpp.rootCategory=DEBUG, console,fileapp
log4cpp.appender.console=ConsoleAppender
log4cpp.appender.console.layout=PatternLayout
log4cpp.appender.console.layout.ConversionPattern={%d{%Y-%m-%d %H:%M:%S.%l}}{%p}: %m%n
log4cpp.appender.fileapp=RollingFileAppender
#当日志文件到达maxFileSize大小时,将会自动滚动
log4cpp.appender.fileapp.maxFileSize=400000
#maxBackupIndex指定可以产生的滚动文件的最大数
log4cpp.appender.fileapp.maxBackupIndex=3
#fileName指定信息输出位置
log4cpp.appender.fileapp.fileName=test.txt
#PatternLayout 表示可以灵活指定布局模式
log4cpp.appender.fileapp.layout=PatternLayout
#append=true 信息追加到上面指定的日志文件中,false表示将信息覆盖指定文件内容
log4cpp.appender.fileapp.append=true
log4cpp.appender.fileapp.layout.ConversionPattern={%d{%Y-%m-%d %H:%M:%S.%l}}{%p}{%F}{%L}: %m%n
读取:
try
{
log4cpp::PropertyConfigurator::configure("./logsetting.conf");
}
catch(const std::exception& e)
{
std::cerr << e.what() << '\n';
}
log4cpp::Category::getRoot().error("hello world");