log4cpp编译
⑴ 为什么log4cpp怎么就编译不过
Log4cxx需要依赖于APR。Log4cpp较log4c移植性稍差些。Log4c基本上都是一些纯c的东西闭弯猜,移植性比其他二轿型者都要好log4cplus: 简洁, 下载的包编译顺利, 测试例子也能闹宏顺利运行。log4cxx: 臃肿, 需要引用apr(Apache Portable Runtime), 最痛苦的是老是编译不了。log4cpp: 落后, 最后更新于2007年,而且下载的包不完整。
⑵ Log4cpp的下载安装
2.1 下载
下载版本0.3.5rc3,这个版本目前是最稳定的,版本1.0在VC中表现不稳定。下载后的包名字为:log4cpp-0.3.5rc3.tar.gz(源代码包)和log4cpp-docs-0.3.5rc3.tar.gz(文档压缩包)。将它们解压后放入D盘。
2.2 在VC6中编译Log4cpp
进入D:log4cpp-0.3.5rc3msvc6目录,打开VC6的工作区msvc6.dsw,将其中的工程都删除,只保留log4cpp和log4cppDLL两个工程。分别编译它们的Debug和Release版本。
在VC6中编译Log4cpp会报错,其实只有一个错误,即不能在头文件中定义变量,同时给变量赋默认值。修改方法如下:将头文件Priority.hh中的这一行:
static const int MESSAGE_SIZE = 8;
改为:
static const int MESSAGE_SIZE;
并在Priority.cpp中的所有include语句后加上:const int log4cpp::Priority::MESSAGE_SIZE = 8;
编译链接成功后会得到log4cppD.dll、log4cppD.lib(Debug版的dll和lib文件)和log4cpp.dll、log4cpp.lib(Release版的dll和lib文件)。新建目录D:log4cpp-0.3.5rc3lib,将以上四个文件拷贝到该目录下。在VC中添加设置lib和include路径。
将D:log4cpp-0.3.5rc3lib加入系统的Path路径中。
⑶ Log4cpp的优点
Log4cpp是个基于LGPL的开源项目,移植自Java的日志处理跟踪项目log4j,并保持了API上的一致。其类似的支持库还包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。
Log4cpp有如下优点:
1. 提供了可扩展的多种日志记录方式;
2. 提供了NDC(嵌套诊断上下文),可用于多线程、多场景的跟踪调试;
3. 提供了完整的日志动态优先级控制,可随时调整需要记录的日志优先级;
4. 可通过配置文件完成所有配置并动态加载;
5. 性能优秀,内存占用小,经过编译后的log4cpp.dll大小仅有160kb;
6. 代码级的平台无关性,Log4cpp源代码经过编译后,适用于大多数主流的操作系统和开发工具;
7. 概念清晰,学习和使用方便,熟练程序员一天之内即可很好地应用log4cpp进行开发
⑷ log4cpp,log4cplus,log4cxx这几个包之间是什么关系
Log4cxx需要依赖于APR。
Log4cpp较log4c移植性稍差些。
Log4c基本上都是一些纯c的东西,移植性比其他二者都要好
log4cplus: 简洁, 下载的包编译顺利, 测试例子也能顺利运行。
log4cxx: 臃肿, 需要引用apr(Apache Portable Runtime), 最痛苦的是老是编译不了。
log4cpp: 落后, 最后更新于2007年,而且下载的包不完整。
⑸ linux上编译log4cpp1.0包时出现错误。
出这个问题不应该,我怀疑你的这个程序源代码和你当前用的系统发布时间差距太大,导致这个命令执行有问题。
或者就是某些脚本的语法已经变了。你用错 shell 解释器了
——————————————————————————
你的 configure 参数有问题?你最好能贴出全部的命令和输出。
陈学阳 那傻-逼就是刷子。我见到他好几次发根本没意义的内容了,他现在都刷的快比我等级高了。我都懒的在认真回答问题了。网络那群脑残也不管管。网络这么大的网站还需要这么多垃圾水贴充门面?
⑹ C++编写Windows服务程序中调用Log4cpp产生日志问题
log4CPlus
我用的是这个蚂腔孝,很好用,封装可参考网页,路径输出什么的只圆枯需改改配置文件,无需重新编译代码。看样子你有基础闷稿的,相信你可以看懂。
⑺ Log4cpp的编译方法
让我们从一个简单的例子开始,该例子将两条日志信息写入字符串流,该流会在标准控制台cout上输出,项目的名称是HelloLog4Cpp:
#include <iostream>
#include log4cpp/Category.hh
#include log4cpp/OstreamAppender.hh
#include log4cpp/BasicLayout.hh
#include log4cpp/Priority.hh
using namespace std;
int main(int argc, char* argv[])
{
log4cpp::OstreamAppender* osAppender = new log4cpp::OstreamAppender(osAppender, &cout);
osAppender->setLayout(new log4cpp::BasicLayout());
log4cpp::Category& root = log4cpp::Category::getRoot();
root.addAppender(osAppender);
root.setPriority(log4cpp::Priority::DEBUG);
root.error(Hello· log4cpp in a Error Message!);
root.warn(Hello ·log4cpp in a Warning Message!);
log4cpp::Category::shutdown();
return 0;
}
要顺利编译运芦兄伏行还有两个地方需要设置,其一是引入的库中加上log4cppD.lib(debug版dll库的引入文件),即在头文件处加上陪携#pragma comment(lib, log4cppD.lib);其二是尘拍将C/C++的Code Generation中的Use Runtime library设置为“Debug Multithreaded DLL”。设置完成后编译运行结果如下:
1248337987 ERROR : Hello· log4cpp in a Error Message!
1248337987 WARN : Hello· log4cpp in a Warning Message!
以上两条日志格式很简陋,要设置合乎心意的日志格式,请参考后续的PatternLayout章节。