是否有办法实现多个独立的日志系统与Boost.Log
Is there a way to implement multiple independent logging systems with Boost.Log?
Boost.Log使用全局单例"core"对象,所有日志消息都通过该对象传递。这样看来,在独立的线程上拥有两个独立的任务并使用有效独立且可单独配置的日志堆栈并不是那么简单。
例如,假设类A和类B都调用类C,并且这三个类都执行日志记录。但是,我希望A类启动的工作被记录到文件"a.log",B类启动的工作被记录到文件"b.log"。在Boost.Log中是否有一种惯用的方法来实现此结果?我的应用程序是动态链接的c++,基于vc++ 2015/Windows和GCC 4.8.4/Ubuntu。
是的,Boost.Log通过属性和过滤来支持这个用例。基本上,您需要做的是为a.log和b.log设置两个文件接收器。在每个接收器中,您需要设置一个过滤器,该过滤器仅通过以特殊方式标记的日志记录-通过具有特殊属性值。然后将记录器添加到类A和类B中,并确保记录器具有特殊属性,具有您在设置的过滤器中检查的不同值。
这个场景是用Boost.Log中的通道记录器实现的。通道日志记录器有一个名为"channel"的属性,它标识日志记录的来源。您可以使用带有lambda表达式或自定义函数的"Channel"属性来构造过滤器。
相关文章:
- C++,系统无法执行指定的程序
- 在UNIX系统中使用DIR查找文件的字节大小
- 错误处理.将系统错误代码映射到泛型
- 当系统的卷被修改时,如何修改WASAPI环回捕获卷
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 为什么系统日志有两个不同的函数声明?
- 系统日志不转发远程消息
- 使用 log4cplus 将日志发送到远程系统日志服务器的代码是否正确
- 事件记录API未写入系统日志
- C++中央日志记录系统
- 如何将C/C++printf()消息重定向到windows电话日志系统
- 该程序不会在任何地方打印系统日志?
- 为什么 printf 可以屏蔽竞争条件,而系统日志不能?
- 常见日志文件系统 API 的 RegisterManageableLogClient() 和"access is denied"错误
- 如何在C++中读取系统调用失败时显示的故障日志消息
- 从 GLOG 执行系统日志时如何更改标签'UNKNOWN'?
- 是否有办法实现多个独立的日志系统与Boost.Log
- 获取Ubuntu系统日志中的wxLogSysError
- 为速度关键系统设计跟踪/日志
- 日志系统应该使用哪种输出方法