【问题标题】:C++ logging framework suggestions [closed]C++ 日志框架建议 [关闭]
【发布时间】:2010-12-16 17:11:52
【问题描述】:

我正在寻找具有以下功能的 C++ 日志框架:

  • 日志具有严重性(信息、警告、错误、严重等)
  • 用模块名称标记日志
  • 框架有一个 UI(或 CLI)来配置我们实际将哪些模块记录到文件,以及将日志写入文件所需的最低严重性。
  • 有一个查看器,可让我搜索每个模块、严重性、模块名称、错误名称等

【问题讨论】:

  • 没有答案,但我有时也在寻找相同的答案,但没有找到我喜欢的。
  • 进程 ID 和线程 ID 证明对于多线程应用程序非常有用。
  • 我建议不要使用 log4cxx。不幸的是,这个项目似乎已经死了(我只是在 用 log4cxx 替换了自己的日志框架并遇到了一些问题后才意识到这一点)。我只想在这里提一下,因为这篇文章是我在谷歌上搜索“C++ 日志框架”时的第一篇文章。如果 Apache 基金会在他们的 log4cxx 主页上提到 log4cxx 的状态,那就太好了,这样其他人也会被警告。
  • 它可能不适合您的目的,但 log4cxx 再次被积极维护。

标签: c++ logging


【解决方案1】:

不确定来自 UI 或 CLI 的配置。我曾经使用过这两种日志框架。

https://sourceforge.net/projects/log4cplus/
https://logging.apache.org/log4cxx/index.html

根据可以手动编辑的配置文件或通过快速而肮脏的 GUI 或 CLI 应用程序来驱动日志记录并不难。动态调整这些可能有点困难,但还不错。

更新:

看起来提议的 Boost.Log 现在位于 Boost 1.54 中,这是一个稳定版本。如果您已经在使用 Boost,那么我会看看它。

【讨论】:

  • 我不喜欢那些库。他们有内存泄漏。并且 log4cxx 需要 5 个其他 apache 东西才能构建。
  • @m_pGladiator 您能否详细说明它们的泄漏方式/位置?甚至是显示它的一些资源的链接(错误报告......)?
【解决方案2】:

没有查看器,但您可以尝试pantheios。我已经使用它快一年了,对它非常满意。

【讨论】:

    【解决方案3】:

    我强烈建议Pantheios,因为它是唯一一个完全类型安全的,也是very efficient。在选择正确的“前端”和“后端”时,它给用户带来了一些工作,但一旦你让它工作,你就可以修复并忘记。

    它不提供复杂的日志记录工具 - 例如。滚动文件 - 但那是 by design,因为它旨在与其他具有更多功能(但性能/类型安全性较差)的日志库结合使用。

    【讨论】:

    • 声称它是“唯一的”类型安全的日志库似乎有点夸大其词。你能用一些信息来支持吗?
    【解决方案4】:

    如果您关心性能,建议您查看Pantheios。特别是,它有 very high performance,它可以与其他日志库结合使用——它充当日志库(例如 log4cxx)和您的应用程序代码之间的高效且类型安全的层。

    【讨论】:

      【解决方案5】:

      您可以使用wxWidgets 并使用它非常棒的class 进行日志记录。这相当简单明了。例如,您可以创建一个对话框来收集所有日志(例如 wxLogError、wxLogMessage、wxLogDebug 等)。

      【讨论】:

        【解决方案6】:

        Pantheios 在性能方面是一个不错的候选人,但我个人更喜欢P7 库。 我的内部测试(CPU i7-4870HQ、SSD)表明 P7 比 Pantheios 更快。

        • Pantheios 每秒写入 180 万条日志行(时间和短信)
        • P7 每秒写入 240 万条日志行(时间、线程、CPU 内核、函数、文件、行和文本消息)

        【讨论】:

        • 你能扩展它的用途吗? P7有什么痛点吗?开发从谷歌代码转移到另一个平台上(例如 GitHub、BitBucket 等),知道为什么吗?看起来不错,但我对项目的沟通和可见性感到担忧。
        • 用途:时间要求严格的应用程序、嵌入式系统、游戏。对于同时观察多个应用程序/设备很有用,尤其是在使用遥测时。 痛点:可能是日志格式如 ("Value=%d", myVal);必须小心。 GitHub、BitBucket:不知道可以问作者。
        • 通信:据我所知通信协议是基于UDP的,由于性能原因没有加密。
        • 谢谢。我的意思是项目开发团队之间的沟通:)
        猜你喜欢
        • 2010-09-16
        • 2011-06-11
        • 2015-03-07
        • 2011-02-02
        • 2012-05-17
        • 2013-10-27
        • 1970-01-01
        • 2011-02-26
        • 1970-01-01
        相关资源
        最近更新 更多