C++ 有没有办法用Boost.Log实现多个独立的日志系统?

C++ 有没有办法用Boost.Log实现多个独立的日志系统?,c++,logging,boost-log,C++,Logging,Boost Log,Boost.Log使用一个全局单例“”对象,所有日志消息都通过该对象传递。这样看来,在具有有效独立且可单独配置的日志堆栈的独立线程上拥有两个独立的任务并不容易 例如,假设类A和类B都调用类C,并且所有三个类都执行日志记录。但是,我希望由A类启动的工作记录到文件“A.log”,由B类启动的工作记录到文件“B.log”在Boost.Log中是否有一种惯用的方法来实现这一结果? < >我的应用程序是动态链接C++,它是在VC++ 2015/Windows和GCC 4.84/Ubuntu. < P>是的

Boost.Log使用一个全局单例“”对象,所有日志消息都通过该对象传递。这样看来,在具有有效独立且可单独配置的日志堆栈的独立线程上拥有两个独立的任务并不容易

例如,假设类A和类B都调用类C,并且所有三个类都执行日志记录。但是,我希望由A类启动的工作记录到文件“A.log”,由B类启动的工作记录到文件“B.log”在Boost.Log中是否有一种惯用的方法来实现这一结果?


< >我的应用程序是动态链接C++,它是在VC++ 2015/Windows和GCC 4.84/Ubuntu.

< P>是的,Booost。log通过属性和过滤来支持这个用例。基本上,您需要做的是有两个文件接收器-用于a.log和b.log。在每个接收器中,您需要设置一个过滤器,该过滤器将仅通过具有特殊属性值的特殊方式传递标记的日志记录。然后将记录器添加到类A和B中,并确保记录器具有特殊属性,该属性具有在设置的过滤器中检查的不同值


此场景是在Boost.Log中使用实现的。通道记录器有一个名为“通道”的属性,用于标识日志记录的来源。您可以使用“通道”属性与您的或一起构造过滤器。

谢谢,这似乎是一个很好的方法。对于另一个问题(也是由@andrey提出的)的回答与解决这个问题的方法几乎相同。我想我能按照你的建议实现我想做的事情。