Boost Log V2 +后端特定属性?

时间:2016-03-10 12:37:34

标签: logging boost

我正在使用Boost的日志。我已经指定了多个后端,并且想法是能够为每个后端指定不同的过滤,这意味着 ERROR日志将转到一个后端,TRACE记录到另一个后端,等等。 [后端数量来自配置文件,所以它不是静态的, 我不能采用不同格式的每后端方法]

我的问题是我没有看到我能否"追加"

是否有一些后端特定属性(我知道没有这样的东西)

我试图从后端继承添加我自己的属性来识别后端,但它显然是一个死胡同,因为我无法做到 将此信息转发给格式化程序。

有人想过如果可以通过Boost的日志实现这一目标吗? 谢谢,

1 个答案:

答案 0 :(得分:0)

创建了一个新的同步接收器,以便注入"我的额外""属性"" 所以几乎我的水槽填充" prefilter"日志记录,所以"我的" will_consume函数我可以访问我的m_LogModule属性。

template< typename SinkBackendT >
class synchronous_sink_ex : public boost::log::sinks::synchronous_sink<SinkBackendT>
{
    public:
        synchronous_sink_ex(const std::string LogModule) : m_LogModule(LogModule) {}

        template<typename... Args>
        synchronous_sink_ex(const std::string LogModule, Args&&... args) : m_LogModule(LogModule), boost::log::sinks::synchronous_sink<SinkBackendT>(args...) {}

        virtual ~synchronous_sink_ex() {}

        /** This will "pre-filter" the logs based upon the logmodule */
        bool will_consume(boost::log::attribute_value_set const& attributes);

    private:
        std::string m_LogModule;
};