如何使用Boost::log不重写日志文件



下面是使用boost::log写入日志的简单示例,

#include <boost/log/trivial.hpp>
namespace logging = boost::log;
logging::add_file_log("sample.log")->set_filter(
logging::trivial::severity >= logging::trivial::info
);
BOOST_LOG_TRIVIAL(info) << "log content";

每次运行logging::add_file_log("sample.log")都会重写日志文件——擦除原始内容并写入新日志。因此,它不能用于多进程单日志文件系统。如何设置不重写文件?

编辑:

我将这个boost::登录到dll中,并尝试让其他exe文件调用它。

您可以将打开模式传递给设置函数:

在Coliru上直播

#include <boost/log/trivial.hpp>
#include <boost/log/utility/setup.hpp>
#include <random>
namespace logging = boost::log;
namespace logkw = logging::keywords;
int main()
{
logging::add_file_log("sample.log", logkw::open_mode = std::ios::app)
->set_filter(                                            //
logging::trivial::severity >= logging::trivial::info //
);
std::mt19937 mt(std::random_device{}());
BOOST_LOG_TRIVIAL(info) << "log content " << std::uniform_int_distribution(5,50)(mt);
}

打印,例如

log content 33
log content 14
log content 39
log content 39
log content 46

最新更新