当前位置: 首页 > 工具软件 > Log4cl > 使用案例 >

log4cplus 1.2.0 编译,使用记录

赵钊
2023-12-01


需求:根据日期建立文件夹,根据文件大小分包,保存一定时间内的日志
实际上就是RollingFileAppender和DailyRollingFileAppender2个appender的结合

先说结论:官方appender实现不了

网上搜索说TimeBasedRollingFileAppender能实现这种需求,但是本机用的版本比较老,没有
这个appender
由于使用的是vs2008, 最新版本的需要c++11,没版本,找了个老版本,1.2.0
cmake生成,win10系统,选择了vs 9 2008老是提示下面的内容:

No CMAKE_CXX_COMPILER could be found

试了很多方法不行,选择了special native compiler,
手动选择了c/c++的编译器为vs2008的cl.exe
configure 的时候提示 找不到 mspdb80.dll
从Common7\IDE 拷一份到VC\bin 目录下

Ok, configure成功
需要注意2个选项:
UNICODE,_WIN32_WINNT
UNICODE 根据需要看是否选择,默认是选择的
_WIN32_WINNT,这个选项 可以参考
https://blog.csdn.net/hellokandy/article/details/52033838

生成工程,生成lib,测试

使用如下的配置文件:

log4cplus.logger.info=INFO,logInfo

log4cplus.additivity.file=false
log4cplus.appender.logInfo=log4cplus::TimeBasedRollingFileAppender
#设置日志文件大小
log4cplus.appender.logInfo.MaxFileSize=1KB
#设置生成日志最大个数
log4cplus.appender.logInfo.MaxBackupIndex=50
#设置输出日志路径与格式
log4cplus.appender.logInfo.layout=log4cplus::PatternLayout
log4cplus.appender.logInfo.FilenamePattern=Log\%d{yyyyMMdd}\logInfo_%d{yyyyMMdd}.log
#设置可以创建文件夹
log4cplus.appender.logInfo.CreateDirs=true

log4cplus.appender.logInfo.ImmediateFlush=true
log4cplus.appender.logInfo.RollOnClose=false
#设置打印格式
log4cplus.appender.logInfo.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S,%q}]%m%n

无论如何,如果TimeBasedRollingFileAppender支持按日期和大小分包的话,理论上应该可以
实现的
但实际上经过测试,不会按大小分包
又想,如果DailyRollingFileAppender支持日志文件大小限制的话也能达到要求。但实际上
DailyRollingFileAppender不支持MaxFileSize这个属性

测试配置文件如下:

log4cplus.logger.info=INFO,logInfo

log4cplus.additivity.file=false
#log4cplus.appender.logInfo=log4cplus::TimeBasedRollingFileAppender

log4cplus.appender.logInfo=log4cplus::DailyRollingFileAppender
#设置日志文件大小
log4cplus.appender.logInfo.MaxFileSize=200K
log4cplus.appender.logInfo.Schedule=MINUTELY
#设置生成日志最大个数
log4cplus.appender.logInfo.MaxBackupIndex=3
#设置输出日志路径与格式
log4cplus.appender.logInfo.layout=log4cplus::PatternLayout
log4cplus.appender.logInfo.File=./Log/%d{{yyyy-MM-dd}}/logInfo.log
#设置可以创建文件夹
log4cplus.appender.logInfo.CreateDirs=true
log4cplus.appender.logInfo.Append=true
log4cplus.appender.logInfo.ImmediateFlush=true
log4cplus.appender.logInfo.RollOnClose=false
#设置打印格式
log4cplus.appender.logInfo.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S,%q}]%m%n

结论就是如上所述,如果有误,请各位大侠指出

后来搜索一下c++的其他日志库,log4cxx,glog好像可以达到这种需求,还未测试,不能下结论

 类似资料: