我现在已经尝试了大约两周的时间来使用日志库。我试过Log4cxx,Log4cpp,log4cplus和boost.log。问题不在于这些对我来说都不起作用,而是因为我无法弄清楚如何让它们完全发挥作用。我真的想使用log4cxx,因为我正在使用log4j / logback工作,但我无法获得任何基于log4j构建的库。我已经能够构建和使用boost库,但无论我尝试什么,boost.log都会给我各种链接器错误。如果有人可以指导我逐步指导这些库中的一个工作,我将非常感激。另外,如果重要的话,我正在使用eclipse作为我的IDE。
答案 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
然后
- 手动提取此zip apr-1.2.11-win32-src.zip( 如果未手动重命名,则提取的文件夹应命名为“apr'” 它)
- 手动提取此zip文件apr-util-1.2.10-win32-src.zip( 提取的文件夹应该命名为' apr-util',如果不是手动的话 重命名)
- 打开命令提示符并运行以下命令:cd apache-log4cxx-0.10.0 configure(这个 将执行configure.bat)
醇>我们需要禁用APR ICONV和LDAP支持。 为此,我们将手动附加以下文件:
- 打开apr-util \ include \ apu.hw。找到以“#define”开头的行 APU_HAVE_APR_ICONV”。将值更改为0并保存。
- 打开apr-util \ include \ apr_ldap.hw。找到以。开头的行 “#define APR_HAS_LDAP”将值更改为0并保存。
醇>我们需要构建log4cxx.dll,以便转换* .dsw 到* .cxproj。
- 启动Visual Studio 2013并打开log4cxx.dsw。
- VS会问你是否愿意改变一切。只需单击是。 迁移报告中可能会有一些警告,但没有任何警告 应该阻止解决方案的开启。
醇><强>&GT;项目xml,apr和apr-util应该成功构建。
如果您尝试编译log4cxx项目,那么它最多 可能会因数百个错误而失败。这是由于VC ++中的一个错误 这可以解决。
- 将所有宏移动到它们所在的类之外(上方)。 LOG4CXX_LIST_DEF宏用于定义类。错误C2252中报告的所有宏都需要移出任何类。这个 也可能包括在宏中使用的移动定义。
- 接下来,将所有LoggingEvent :: KeySet更改为KeySet(不再嵌套在父类中)
醇><强>&GT;在此之后,log4cxx项目现在应该编译 在您的计算机上成功完成。