Easylogging++ 日志文件滚动

本文详细介绍了Easylogging++中日志文件的滚动策略,包括按大小和按时间滚动。通过设置配置项MAX_LOG_FILE_SIZE和LoggingFlag::StrictLogFileSizeCheck,可以实现按大小滚动,并使用回调函数保留日志记录。此外,文章还探讨了如何自定义按时间滚动功能,新增了LoggingFlag::StrictLogFileTimeCheck,并给出了限制条件和使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按大小滚动文件

    在Easylogging++中,已经实现了按照日志文件大小来滚动日志记录。有一个配置项:MAX_LOG_FILE_SIZE,这个配置项的值(以字节为单位)表示的就是日志文件的最大大小。一旦日志文件的大小达到这个配置项设置的值,日志文件就会自动清空文件中所有的日志记录,并重新开始写入。不过配置项MAX_LOG_FILE_SIZE在默认情况下是不生效的,需要设置标记:LoggingFlag::StrictLogFileSizeCheck来激活。另外,如果我们想要保留之前的日志记录,那么我们可以注册一个回调函数,这个回调函数将会允许我们在清空日志文件之前对日志文件进行一次处理。下面的代码演示了按大小滚动日志文件,并通过回调函数保留了所有的日志记录:

#include "easylogging++.h"  
  
INITIALIZE_EASYLOGGINGPP  
  
static unsigned int idx;  
  
void rolloutHandler(const char* filename, std::size_t size)   
{  
    /// 备份日志  
    system("mkdir bin");  
    std::stringstream ss;  
    ss << "move " << filename << " bin\\log_backup_" << ++idx;  
    system(ss.str().c_str());  
}  
  
int main(int, char**)  
{  
    idx = 0;  
    el::Loggers::addFlag(el::LoggingFlag::StrictLogFileSizeCheck);  
    el::Loggers::reconfigureAllLoggers(el::ConfigurationType::MaxLogFileSize, "100");  
  
    /// 注册回调函数  
    el::Helpers::installPreRollOutCallback(rolloutHandler);  
  
    for (int i = 0; i < 100; ++i)  
    {  
        LOG(INFO) << "Test";  
    }  
  
    /// 注销回调函数  
    el::Helpers::uninstallPreRollOutCallback();  
    return 0;  
}  

   通过配置文件来设置配置项 MAX_LOG_FILE_SIZE 的大小也可以实现上述演示代码的效果,另外我们还可以设置不同级别的日志文件按照不同的文件大小来滚动。如果不小心忘记了设置标记:LoggingFlag::StrictLogFileSizeCheck ,我们还可以通过调用函数 el::Helpers::validateFileRolling(el::Logger*, const el::Level&) 以手动的方式来检查日志滚动,建议各位小伙伴可以自己尝试一下。

 

按时间滚动文件

   在Easy

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值