1

我对配置 boost::log 有很大的问题。我需要设置最大日志文件大小。我试图这样做:

// Create a text file sink
    typedef boost::log::sinks::synchronous_sink< boost::log::sinks::text_multifile_backend > file_sink;

    // set log file size
    boost::shared_ptr< boost::log::sinks::text_file_backend > backend =
        boost::make_shared< boost::log::sinks::text_file_backend >(
            boost::log::keywords::rotation_size = 1 * 1024 * 1024
        );

    boost::shared_ptr< file_sink > sink(new file_sink(backend));

    // Set up how the file names will be generated
    sink->locked_backend()->set_file_name_composer(boost::log::sinks::file::as_file_name_composer(
    boost::log::expressions::stream << "logs/" << boost::log::expressions::attr< std::string >("logger_name") << ".log"));

但它甚至没有编译:/。

错误 1 ​​错误 C2664:'boost::log::v2s_mt_nt5::sinks::text_multifile_backend::text_multifile_backend(const boost::log::v2s_mt_nt5::sinks::text_multifile_backend &)':无法从 'const boost: 转换参数 1: :shared_ptr' 到 'const boost::log::v2s_mt_nt5::sinks::text_multifile_backend &' ....................\boost_1_54_0\boost\smart_ptr\make_shared_object。第 259 节

如何配置日志文件大小?

4

1 回答 1

0

使用 text_multifile_backend 是不可能的,请在此处阅读:Boost.Log 文本多文件后端

多文件后端不知道是否要使用特定文件。也就是说,如果一条日志记录已写入文件 A,则库无法判断是否会有更多记录适合文件 A。这使得无法实现文件轮换和删除未使用的文件以释放文件系统上的空间。用户必须自己实现这样的功能。

您可以尝试编写自己的 Boost.Log Sink ,它可以与 Boost.Log 库一起使用并在那里实现这样的功能:Boost.Log Writing your own sink

于 2013-08-14T09:54:32.157 回答