5

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

有人知道如何更改提升日志对象的目的地或格式化程序吗?

我的情况是我希望我的服务器组件处理的每个请求都有一个不同的目标(文件名),所以我需要有灵活的方法来更改它们。此外,我将同时从不同的线程记录日志,并且每个日志都应该有自己的目的地,很容易添加 - 删除。

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

谁能给我一些指导,告诉我如何创建一种灵活的方式来从 boost::logging 向 Logger 添加/删除目的地?

4

1 回答 1

2

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

希望这可以帮助!

于 2010-12-17T09:56:34.380 回答