C ++日志库设置

时间:2011-02-01 02:55:10

标签: c++ boost log4cxx log4cpp log4cplus

我现在已经尝试了大约两周的时间来使用日志库。我试过Log4cxx,Log4cpp,log4cplus和boost.log。问题不在于这些对我来说都不起作用,而是因为我无法弄清楚如何让它们完全发挥作用。我真的想使用log4cxx,因为我正在使用log4j / logback工作,但我无法获得任何基于log4j构建的库。我已经能够构建和使用boost库,但无论我尝试什么,boost.log都会给我各种链接器错误。如果有人可以指导我逐步指导这些库中的一个工作,我将非常感激。另外,如果重要的话,我正在使用eclipse作为我的IDE。

4 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

它还取决于其他非标头Boost库:

  

日志记录库使用了其他几个需要的Boost库   也建设。这些是Boost.Filesystem,Boost.System,   Boost.DateTime,Boost.Thread和Boost.Regex。参考他们的   有关建筑程序的详细说明的文件。

根据您的平台,可能会有Boost库的预构建版本。如果您按照说明操作,否则自己构建它是很简单的。如果你遇到困难,请更新你的问题,看看你到底遇到了什么以及你看到了什么。

答案 2 :(得分:0)

我建议Pantheios。首次下载时需要一些时间来构建所有内容 - 键入make build test然后去吃午餐 - 并且您必须在链接时选择输出流(Pantheios称之为“后端”),但对于编码,它是非常简单,例如

std::string name;
int age;

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

它是从速度开始设计的 - 除非打开“DEBUG”级别并且健壮性,否则年龄不会转换为字符串 - 这就是为什么你不能直接传递基本类型,并使用“插入器”(例如pantheios::integer)。有关详细信息,请参阅Pantheios的作者this recent blog post

答案 3 :(得分:0)

我设法让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. 手动提取此zip apr-1.2.11-win32-src.zip(   如果未手动重命名,则提取的文件夹应命名为“apr'”   它)
  2.   
  3. 手动提取此zip文件apr-util-1.2.10-win32-src.zip(   提取的文件夹应该命名为' apr-util',如果不是手动的话   重命名)
  4.   
  5. 打开命令提示符并运行以下命令:cd   apache-log4cxx-0.10.0 configure(这个   将执行configure.bat)
  6.         

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

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

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

           
          
      1. 启动Visual Studio 2013并打开log4cxx.dsw。
      2.   
      3. VS会问你是否愿意改变一切。只需单击是。   迁移报告中可能会有一些警告,但没有任何警告   应该阻止解决方案的开启。
      4.         

        <强>&GT;项目xml,apr和apr-util应该成功构建。

             

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

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

          <强>&GT;在此之后,log4cxx项目现在应该编译   在您的计算机上成功完成。