【问题标题】:C++ Logging Library SetupC++ 日志库设置
【发布时间】:2011-06-19 00:11:49
【问题描述】:

我已经尝试了大约 2 周来获得一个可以使用的日志库。我试过 Log4cxx、Log4cpp、log4cplus 和 boost.log。问题不在于这些都不适合我,而是我根本不知道如何让它们工作。我真的很想使用 log4cxx,因为我在工作中使用 log4j/logback,但是我无法获得任何基于 log4j 的库来构建。我已经能够构建和使用 boost 库,但是无论我尝试什么, boost.log 都会给我各种链接器错误。如果有人可以指导我获取分步指南以使这些库之一正常工作,我将不胜感激。另外,如果这很重要,我将使用 eclipse 作为我的 IDE。

【问题讨论】:

  • 您使用的是什么操作系统?另外,请务必先编译库,然后将头文件包含到您的项目中(实现将一次编译到库中,因此您不必多次重新编译庞大的库次)
  • 我使用的是 Windows 7。我不确定你的意思是编译然后获取头文件。抱歉,我对使用第三方库有点陌生。至少对于 boost,我只是将 boost 根目录添加为包含路径,然后为我需要的每个文件使用包含指令。

标签: c++ boost log4cxx log4cpp log4cplus


【解决方案1】:

你有没有得到这个工作? Log4cxx 绝对适用于 Win7。也许您可以发布一些构建错误。只是猜测,也许您没有将 eclipse 项目配置为与 log4cxx 静态库链接。

【讨论】:

    【解决方案2】:

    Boost.Log 非常适合我(Linux 和 Windows)。它不是一个只有头文件的库,有一个你需要链接的编译部分。请参阅说明here

    它还依赖于其他非标头 Boost 库:

    日志库使用了其他几个需要的 Boost 库 建设太。这些是 Boost.Filesystem、Boost.System、 Boost.DateTime、Boost.Thread 和 Boost.Regex。参考他们的 有关构建过程的详细说明的文档。

    根据您的平台,可能会有 Boost 库的预构建版本。否则,如果您按照说明自行构建它是很简单的。如果您卡住了,请更新您的问题,说明您卡在哪里以及您看到了什么。

    【讨论】:

      【解决方案3】:

      我推荐Pantheios。首次下载时构建所有内容需要一些时间 - 输入 make build test 并去吃午饭 - 您必须在链接时选择输出流(Pantheios 称它们为“后端”),但对于编码来说,这真的很简单,例如

      std::string name;
      int age;
      
      pantheios::log_DEBUG("name=", name, " age=", pantheios::integer(age));
      

      它的设计初衷是为了 speed - 除非打开“DEBUG”级别,否则年龄不会转换为字符串 - 并且 robustness - 这这就是为什么您不能直接传递基本类型并使用“插入器”(例如pantheios::integer)的原因。请参阅 Pantheios 的作者this recent blog post 了解更多信息。

      【讨论】:

        【解决方案4】:

        我设法让 log4cxx 工作,这是在 Windows 7 操作系统上运行的 Visual Studios 2013 中完成的。

        这是我一步一步做的:

        下载log4cxx ZIP包解压其内容http://logging.apache.org/log4cxx/download.html

        下载 apr 和 apr-util ZIP 包,http://apr.apache.org/download.cgi

        然后

        1. 手动解压这个压缩包apr-1.2.11-win32-src.zip( 提取的文件夹应命名为“apr”,如果不是手动重命名 它)
        2. 手动解压这个zip apr-util-1.2.10-win32-src.zip( 如果不是手动提取的文件夹应该命名为“apr-util” 重命名)
        3. 打开命令提示符并运行以下命令:cd apache-log4cxx-0.10.0 配置(这个 将执行configure.bat)

        我们需要禁用 APR ICONV 和 LDAP 支持。 为此,我们将手动附加以下文件:

        1. 打开 apr-util\include\apu.hw。找到以“#define”开头的行 APU_HAVE_APR_ICONV”。将值更改为 0 并保存。
        2. 打开 apr-util\include\apr_ldap.hw。找到以 “#define APR_HAS_LDAP” 将值更改为 0 并保存。

        我们需要构建 log4cxx.dll 来转换 *.dsw 到 *.cxproj。

        1. 启动 Visual Studio 2013 并打开 log4cxx.dsw。
        2. VS 会询问您是否要转换所有内容。只需单击是。 迁移报告中可能有一些警告,但没有 应防止溶液打开。

        > xml、apr 和 apr-util 项目应该会成功构建。

        如果您尝试编译 log4cxx 项目,它将最 可能会因数百个错误而失败。这是由于 VC++ 中的一个错误 这可以解决。

        1. 将所有宏移到它们所在的类之外(上方)。 LOG4CXX_LIST_DEF 宏用于定义类。在错误 C2252 中报告的所有宏都需要移出任何类。这 还可以包括宏中使用的移动定义。
        2. 接下来,将所有 LoggingEvent::KeySet 更改为 KeySet(这不再嵌套在父类中)

        > 在此之后,log4cxx 项目现在应该可以编译了 在您的机器上成功。

        【讨论】:

          猜你喜欢
          • 2020-11-13
          • 2021-04-13
          • 2017-05-11
          • 2015-12-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-17
          相关资源
          最近更新 更多