【问题标题】:How to change logging level without closing a process in C++如何在不关闭 C++ 进程的情况下更改日志记录级别
【发布时间】:2017-09-19 18:42:31
【问题描述】:

我正在编写一个使用 boost 库进行日志记录的程序

    boost::log::keywords::time_based_rotation = boost::log::sinks::file::rotation_at_time_point(0, 0, 0),
    boost::log::keywords::format = "[%TimeStamp%]: %Message%",
    boost::log::keywords::auto_flush = true
    );

    boost::log::add_common_attributes();
    boost::log::core::get()->set_filter(
    boost::log::trivial::severity >= boost::log::trivial::info
    );

我可以通过更改 set_filter 中的参数来更改日志记录级别,但无论如何可以在不更改源代码并重新启动进程的情况下更改日志记录级别?

【问题讨论】:

    标签: c++ linux boost


    【解决方案1】:

    假设您的应用程序确实提供了在运行时传达所需严重级别的某种方式,您始终可以使用新级别设置新过滤器。只要您需要更新,只需致电set_filter

    void update_severity_filter(boost::log::trivial::severity_level new_level)
    {
        boost::log::core::get()->set_filter(
            boost::log::trivial::severity >= new_level
        );
    }
    

    this回答中还描述了其他方式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-01
      • 2023-04-11
      • 2016-03-09
      相关资源
      最近更新 更多