ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Boost log 限制日志文件大小 和 数量

2021-01-12 18:00:37  阅读:494  来源: 互联网

标签:文件大小 log Boost filename keywords 日志 boost MyLog


使用过 python 日志模块, 滚动设置很好用, 能限制日志文件数量 , 不至于长时间运行爆掉硬盘 .
网上找了一圈, 也没找到想要的结果, 有人还自己实现了限制文件数量…太麻烦了
最后自己试出来了, 分享一下:

MyLog::MyLog()
{
    _fileCount = 4;
    _fileSize = 1;
    _logLevel = boost::log::trivial::severity_level::info;
    FMT = "%Y-%m-%d %H:%M:%S";
}

MyLog::~MyLog()
{

}

void MyLog::init(const std::string& filename)
{
    _filename = filename;
    boost::filesystem::path filepath = boost::filesystem::complete(_filename);
    boost::filesystem::path dir = filepath.parent_path();
    if (boost::filesystem::exists(dir) == false)
    {
        boost::filesystem::create_directories(dir);
    }
    auto fmt =
        (
            expr::stream
            << expr::format_date_time< boost::posix_time::ptime >("TimeStamp", FMT)
            << " [" << boost::log::trivial::severity
            << "] " << expr::smessage
            );
    auto consoleSink = boost::log::add_console_log
    (   std::clog,
        keywords::filter = expr::attr< trvl::severity_level >("Severity") >= (trvl::severity_level)_logLevel,
        keywords::auto_flush = true,
        keywords::format = fmt
    );

    auto sink = boost::log::add_file_log
    (
        keywords::open_mode = std::ios::app, 
        keywords::file_name = filename,     // 写入的日志文件名, 如 log.log
        keywords::target_file_name = "log_%Y%m%d-%N.log",  // 备份日志文件命名格式, 必须
        keywords::rotation_size = _fileSize * 1024 * 100,  // 日志文件大小 100KB
        keywords::filter = expr::attr< trvl::severity_level >("Severity") >= (trvl::severity_level)_logLevel,
        keywords::auto_flush = true,
        keywords::format = fmt
    );
    sink->locked_backend()->set_file_collector(sinks::file::make_collector(
        keywords::target = "",                         // 备份日志文件保存目录
        keywords::max_size = _fileSize * _fileCount * 1024 * 100  //所有日志加起来的最大大小
    ));
    boost::log::add_common_attributes();
}

我限制了文件数量 4 个, 结果与设置一致, 算上 log.log 始终是四个文件
在这里插入图片描述

标签:文件大小,log,Boost,filename,keywords,日志,boost,MyLog
来源: https://blog.csdn.net/wn0112/article/details/112538953

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有