我尝试使用Boost库1.61进行登录,一旦大小超过5Ko就旋转文件。但是,每次程序运行时,它都从第一个日志文件开始,超过最大大小!
也就是说,它将文本附加到flog000.txt,然后附加到flog001.txt。
但是所需的行为是:追加到最后一个文件(flog002.txt)然后继续使用flog003.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;
}
答案 0 :(得分:1)
“没有文件收集” - 这至少是问题的一部分。
似乎无法将扫描和附加到现有内容。
但是,如果您进行扫描,则至少可以防止额外的日志消息错误地附加到旧的日志文件中:
<强> Live On Coliru 强>
#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;
}
}
一次运行后:
-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
两次运行后:
-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
三次运行后:
-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