gpt4 book ai didi

c++ - Boost::日志和日志编号

转载 作者:太空狗 更新时间:2023-10-29 20:57:12 24 4
gpt4 key购买 nike

我最近尝试通过 Boost 日志向小型应用程序添加一些日志记录。但是,由于某种原因,我无法使用日志轮换在日志目录中选择正确的计数器。

例如,如果我的 Logs 目录包含文件 Log_000.logLog_001.log 我希望日志记录以Log_002.log 但它总是从 0 重新开始。

我可能遗漏了一些东西,但如果有人能发现一些东西,我将不胜感激。这是我的启动代码:

void initLogging()
{
boost::log::add_common_attributes();
auto core = boost::log::core::get();

core->add_global_attribute("UTCTimeStamp",boost::log::attributes::utc_clock());

auto x = boost::log::add_file_log(
boost::log::keywords::file_name = "Log_%3N.log",
boost::log::keywords::rotation_size = 2 * 1024, // 2k
boost::log::keywords::target = "Logs",
boost::log::keywords::min_free_space = 30 * 1024 * 1024,
boost::log::keywords::max_size = 20 * 1024, // 20k
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(boost::gregorian::greg_day(31)),
boost::log::keywords::scan_method = boost::log::sinks::file::scan_matching,
boost::log::keywords::format = "%UTCTimeStamp% (%TimeStamp%) [%ThreadID%]: %Message%",
boost::log::keywords::auto_flush = true
);

auto d = x->locked_backend()->scan_for_files();
}

非常感谢

最佳答案

啊哈!看起来如果您使用 add_file_log 帮助程序,它会自动调用 scan_for_files

再次调用它似乎会导致计数器重置,所以我只是删除了对 scan_for_files

的调用

只是弹出这个作为答案,以防它让其他人发疯!

这是一个工作示例

Live On Coliru

运行 10 次后,Logs/ 包含:

-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_080.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_081.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_082.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_083.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_084.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_085.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_086.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_087.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_088.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_089.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_090.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_091.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_092.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_093.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_094.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_095.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_096.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_097.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_098.log
-rw-r--r-- 1 2001 2000 998 Jul 17 16:26 Log_099.log

代码 list

#define BOOST_LOG_DYN_LINK 1
#include <boost/log/core.hpp>
#include <boost/log/common.hpp>
#include <boost/log/attributes.hpp>
#include <boost/log/sinks.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <string>

void initLogging()
{
boost::log::add_common_attributes();
auto core = boost::log::core::get();

core->add_global_attribute("UTCTimeStamp",boost::log::attributes::utc_clock());

auto x = boost::log::add_file_log(
boost::log::keywords::file_name = "Log_%3N.log",
boost::log::keywords::rotation_size = 1 * 1024, // 1k
boost::log::keywords::target = "Logs",
boost::log::keywords::min_free_space = 30 * 1024 * 1024,
boost::log::keywords::max_size = 20 * 1024,
boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(boost::gregorian::greg_day(31)),
boost::log::keywords::scan_method = boost::log::sinks::file::scan_matching,
boost::log::keywords::format = "%UTCTimeStamp% (%TimeStamp%) [%ThreadID%]: %Message%",
boost::log::keywords::auto_flush = true
);

//auto d = x->locked_backend()->scan_for_files();
}

int main()
{
initLogging();
for (int i = 0; i < 20; ++i) {
BOOST_LOG_TRIVIAL(trace) << "Let's go shopping " << std::string(400, '*');
}
}

关于c++ - Boost::日志和日志编号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31476147/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com