提升日志记录 - 目标和格式化程序

Ton*_*ion 5 c++ boost-logging

我在使用Boost Logging库时遇到问题,如果我使用自己的Log类向记录器添加格式化程序或目标,我就无法更改该目标或格式化程序.

有人知道如何在boost日志对象上更改目标或格式化程序吗?

我的场景是我希望服务器组件处理的每个请求都有不同的目标(文件名),因此我需要有灵活的方法来更改它们.此外,我将同时从不同的线程登录,每个日志应该真正拥有它自己的目的地,轻松添加 - 删除.

事实上,宏的日志对象实际上是应用程序全局,并没有真正帮助这一点.

任何人都可以给我一些指导,告诉我如何创建一种灵活的方法来从boost :: logging添加/删除Logger的目标?

Dan*_*röm 2

好的,这就是我要尝试的。它可能对你有用。看起来日志记录库似乎是为全局记录器量身定制的,而您却希望使用线程本地记录器。我会查找如何按需创建记录器(即直接),例如通过分析BOOST_DECLARE_LOG. 然后你可以声明一个std::map<int, Logger>用于将线程 ID 映射到特定记录器。也许您可以创建自己的包装类来为客户端代码透明地处理此问题。然后,您只需使用自己的日志记录层进行日志记录,并在需要时创建特定于线程的记录器。如果您需要在请求完成后删除它们,您可以添加一个方法来执行此操作。

希望这可以帮助!

  • 好的,谢谢你的澄清。抱歉又跳到你身上了。不管怎样,似乎所选的日志库有相互冲突的要求。您需要动态创建记录器,而这个想要静态地声明它们。有时最好的事情是编写自己的库,一个满足要求的库。您始终可以重复使用 Boost.Logging 中您喜欢的想法。祝你好运! (2认同)