我正在使用Boost的日志。我已经指定了多个后端,并且想法是能够为每个后端指定不同的过滤,这意味着 ERROR日志将转到一个后端,TRACE记录到另一个后端,等等。 [后端数量来自配置文件,所以它不是静态的, 我不能采用不同格式的每后端方法]
我的问题是我没有看到我能否"追加"
是否有一些后端特定属性(我知道没有这样的东西)我试图从后端继承添加我自己的属性来识别后端,但它显然是一个死胡同,因为我无法做到 将此信息转发给格式化程序。
有人想过如果可以通过Boost的日志实现这一目标吗? 谢谢,
答案 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;
};