我正在考虑开始使用Boost.Log 日志库。有人在使用 Boost.Log 吗?请分享您在这方面的经验。
我正在考虑的其他库是 Apache log4cxx(安装起来似乎很乏味,但我的队友想要一些简单的开始)和 Pantheios(同样的问题,因为它与额外的前端和后端一起工作)。
我正在考虑开始使用Boost.Log 日志库。有人在使用 Boost.Log 吗?请分享您在这方面的经验。
我正在考虑的其他库是 Apache log4cxx(安装起来似乎很乏味,但我的队友想要一些简单的开始)和 Pantheios(同样的问题,因为它与额外的前端和后端一起工作)。
更新:自从写这篇文章以来,我已经用我自己的自定义日志记录替换了 Boost.Log,主要是因为出于各种原因,我决定摆脱所有项目中的所有 Boost 依赖项。如果您对使用 Boost 没问题,我猜从Klaim 的回答来看 Boost.Log 仍然是一个有效的选择。
我在 2010 年对 Boost.Log 的体验如下。
我已经成功地将 Boost.Log 集成到我的游戏引擎中,我只能说好话。当然,现在使用有点早,因为第 2 版将成为正式的 Boost.Log 的实际版本。
请注意,没有维护可用的版本“1.0”。要接收更新,您必须使用可能变得不稳定的前沿(主干)版本。如果您打算在任何严肃的项目中使用此版本,请考虑到这一点。如果你不害怕使用最前沿的版本或未来的破损,那就去吧。使用它真的很好,因为它处于当前状态。
长期以来,我一直认为 log4j/log4cxx 中的分层日志记录系统非常出色,但 Boost.Log 让我不这么认为。过滤和属性更加灵活。
由前端/后端分隔的接收器的设计使得添加额外的后端变得非常容易。无需担心由前端处理的同步问题或过滤。该库还带有许多后端,旋转文件、控制台、系统日志、Windows 事件寄存器等。
我已经编写了自己的接收器后端;一个进入游戏内控制台,一个进入一种用于更严重事件的通知系统。比我预期的要容易,只需几分钟即可启动并运行。
最后但并非最不重要的一点是,维护者/开发者也非常有帮助。您将在项目论坛中获得大量帮助。他在这个周末修复了我报告的两个错误(其中一个主要错误):-)
更新:我正在将 Boost.Log 用于游戏引擎系统,对此我感到非常满意。它快速、线程安全并且在您需要时非常灵活。
Boost.Log 应该在今年(2013 年)即将发布的版本中与所有 Boost 库一起提供。
Boost.Log 用于在其上设置日志系统。如果您阅读文档,您会发现它非常灵活,您可以想到的任何日志记录系统都可以使用它构建(例如在远程计算机上登录)。
因此,有一些宏可以在简单的项目中轻松使用,但我认为这种库主要对真正了解日志记录并希望为其应用程序构建特定架构的人有用。
关于性能,我记得与其他(不太灵活的)日志库相比,提交时存在问题,使其速度较慢,但由于它是草稿并且第一个版本尚未发布,如果您不编写代码,我不会打扰时间要求严格的应用程序。
最后,我认为它太“新”而不能被评价为“现在”。没有其他日志库像这个一样灵活,我不确定是否有很多人会觉得需要使用它。
更新:最近与 Boost.Log 作者的电子邮件交流导致一些数据表明 Boost.Log 显然是快速记录的绝佳替代品。
我最近研究了在我开始的一个项目上实现一个日志系统。
我试过你提到的log4cxx,安装起来确实很繁琐。我花了几个小时才让它在 VS2012 下编译(与其他依赖库......),然后当我在我的项目中使用它时它就崩溃了。当然,标准库不匹配会发生一些奇怪的事情,但无法弄清楚。
所以我切换到 log4cpp,我在几分钟内就启动并运行了它。我发现它优雅而轻巧,正是我所需要的。它具有与著名的 log4j & co 具有相同功能的巨大优势。日志系统,这可能是您团队合作的真正优势(通过配置文件进行配置等)
就性能而言,需要一个函数调用来检查记录器是否针对消息级别处于活动状态,然后需要一个函数调用来实际记录数据。
通过一些自制的宏(将LINE & co. 添加到消息中),log4cpp 在我的项目中确实很有用。
不幸的是,我没有尝试过 Boost.Log,所以无法谈论它,但如果您选择不采用 Boost.Log 方式,我希望这些反馈对您仍然有用。