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

时间:2010-12-17 08:22:06

标签: c++ boost-logging

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

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

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

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

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

1 个答案:

答案 0 :(得分:2)

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

希望这有帮助!