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

How to use Boost::log not to rewrite the log file?

下面是使用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::log包在一个dll中,并试图让其他exe文件调用它。

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

Live On 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