首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >提升日志旋转文件 - 超出大小

提升日志旋转文件 - 超出大小
EN

Stack Overflow用户
提问于 2018-08-03 06:30:16
回答 1查看 0关注 0票数 0

我尝试使用Boost库1.61登录,一旦文件大小超过5KO,就旋转文件。但每次程序运行时,它都从第一个日志文件开始,超过最大值。

也就是说,它将文本附加到Flog000.txt,然后追加到Flog001.txt。

但是所需的行为是:追加到最后一个文件(flg002.txt),然后继续使用flg003.txt.

这是我的代码:

代码语言:txt
复制
#include <boost/log/common.hpp>
#include <boost/log/sinks/text_ostream_backend.hpp>
#include <boost/log/core.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>

void init()
{
   boost::log::add_file_log
      (
      boost::log::keywords::file_name = "flog%3N.txt",
      boost::log::keywords::open_mode = std::ios_base::app,
      boost::log::keywords::rotation_size = 5 * 1024,
      boost::log::keywords::auto_flush = true
      );
}

int main()
{
   init();
   boost::log::sources::logger lg;
   boost::log::add_common_attributes();

   for (int i(0); i < 1000; ++i)
   {
      BOOST_LOG(lg) << "Hello : " << i << std::endl;
   }
    return 0;
}
EN

回答 1

Stack Overflow用户

发布于 2018-08-03 15:42:57

代码语言:txt
复制
#include <boost/log/common.hpp>
#include <boost/log/core.hpp>
#include <boost/log/sinks/text_ostream_backend.hpp>
#include <boost/log/sources/logger.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/file.hpp>

void init() {
    auto s = boost::log::add_file_log(
            boost::log::keywords::file_name = "flog%3N.txt",
            boost::log::keywords::open_mode = std::ios_base::app,
            boost::log::keywords::rotation_size = 5 * 1024,
            boost::log::keywords::auto_flush = true
        );

    auto be = s->locked_backend();
    be->set_file_collector(boost::log::sinks::file::make_collector(
                boost::log::keywords::target = "./", // log file & target have same dir
                boost::log::keywords::max_size = 50 * 1024,
                boost::log::keywords::min_free_space = 100000
                ));

    be->scan_for_files(boost::log::sinks::file::scan_method::scan_matching, true);
}

int main() {
    init();
    boost::log::sources::logger lg;
    boost::log::add_common_attributes();

    for (int i(0); i < 1000; ++i) {
        BOOST_LOG(lg) << "Hello : " << i << std::endl;
    }
}

一次运行完后:

代码语言:txt
复制
-rw-rw-r-- 1 sehe sehe 5116 jun  6 00:27 flog000.txt
-rw-rw-r-- 1 sehe sehe 5109 jun  6 00:27 flog001.txt
-rw-rw-r-- 1 sehe sehe 2665 jun  6 00:27 flog002.txt

两次运行后:

代码语言:txt
复制
-rw-rw-r-- 1 sehe sehe 5116 jun  6 00:27 flog003.txt
-rw-rw-r-- 1 sehe sehe 5109 jun  6 00:27 flog004.txt
-rw-rw-r-- 1 sehe sehe 2665 jun  6 00:27 flog005.txt

三次运行后:

代码语言:txt
复制
-rw-rw-r-- 1 sehe sehe 5116 jun  6 00:28 flog006.txt
-rw-rw-r-- 1 sehe sehe 5109 jun  6 00:28 flog007.txt
-rw-rw-r-- 1 sehe sehe 2665 jun  6 00:28 flog008.txt
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100005906

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档