使用Boost.Log日志库的经验?

时间:2010-08-18 09:05:43

标签: c++ boost logging boost-log

我正在考虑开始使用Boost.Log logging library。有人使用Boost.Log吗?请分享您在这方面的经验。

我正在考虑的其他库是Apache log4cxx(安装起来似乎很乏味,但我的团队成员想要一些简单易用的东西)和Pantheios(同样的问题,因为它适用于额外的前端和后端)。

3 个答案:

答案 0 :(得分:40)

UPDATE :我已经用自己的自定义日志记录替换了Boost.Log,主要是因为我决定在各个项目中摆脱所有Boost依赖项,原因有各种各样。如果您使用Boost就可以了,我猜Boost.Log仍然是Klaim's answer判断的有效选择。

我在2010年的Boost.Log经历如下:


我已经在我的游戏引擎中成功集成了Boost.Log,我只能谈论它的好处。当然,它使用起来有点早,因为版本2将成为官方Boost.Log的实际版本。

请注意,未维护版本“1.0”。要接收更新,您必须使用可能变得不稳定的前沿(主干)版本。如果您要在任何严肃的项目中使用此版本,请考虑这一点。如果你不害怕使用尖端版本或未来的破损,那就去吧。使用非常好,因为它处于当前状态。

我一直认为log4j / log4cxx中的分层日志系统是优越的,但是Boost.Log让我想到了。过滤和属性更灵活。

由前端/后端分隔的接收器设计使得添加额外后端变得非常容易。无需担心前端处理的同步问题或过滤。 该库还附带了许多后端,旋转文件,控制台,系统日志,Windows事件寄存器等。

我写了自己的接收器后端;一个进入游戏内控制台,一个进入一种通知系统,用于更严重的事件。比我预想的要容易,只需几分钟就可以运行起来。

最后但并非最不重要的是,维护者/开发人员也非常有帮助。您将在项目论坛中获得大量帮助。他在本周末报道了两个错误(一个主要的错误),我报告说: - )

答案 1 :(得分:21)

更新:我正在将Boost.Log用于游戏引擎系统,我对它非常满意。它是快速的,线程安全的,并且在您需要时非常灵活。

Boost.Log应该在今年(2013年)即将发布的版本中提供所有Boost库。


Boost.Log用于在其上设置日志系统。如果您阅读文档,您会发现它非常灵活,任何日志记录系统都可以使用它来构建(比如登录远程计算机)。

所以,there are macro to ease use in simple projects但我认为这种库对于那些真正了解日志记录并希望为其应用程序构建特定体系结构的人来说非常有用。

关于性能,我记得在提交时出现了问题,与其他(不太灵活的)日志库相比,它变慢了,但因为它是草稿而且第一个版本还没有出来我不会打扰如果你是不编写对时间要求严格的应用程序。

最后,我认为“现在”评估它太“新”了。没有其他日志库像这个一样灵活,我不确定是否会有很多人觉得需要使用它。

更新:最近与Boost.Log作者进行的电子邮件交换导致一些数据表明,Boost.Log显然是快速记录的绝佳选择。

答案 2 :(得分:7)

我最近考虑在我正在开始的项目上实施日志记录系统。

我提到了log4cxx,安装确实非常繁琐。我需要花几个小时才能在VS2012下编译它(与其他依赖库...),然后当我在我的项目中使用它时它就崩溃了。当然,标准库不匹配会发生一些奇怪的事情,但无法弄明白。

所以我切换到了log4cpp,我在几分钟内就开始运行了。我发现它优雅轻巧,正是我所需要的。它具有与众所周知的log4j和amp;相同功能的巨大优势。合。记录系统,这可能是您团队合作的真正优势(通过配置文件配置等)

就性能而言,需要一个函数调用来检查记录器是否对消息级别是活动的,然后一个函数调用实际记录数据。

使用一些自制宏(将 LINE & co。添加到消息中),log4cpp在我的项目中确实非常有用。

不幸的是,我没有尝试使用Boost.Log,所以不能谈论它,但我希望如果您选择不采用Boost.Log方式,这些反馈对您仍然有用。