log4cxx安装和使用
log4cxx是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,log4cxx是apache软件基金会的开源项目,基于APR实现跨平台支持。一个良好的日志系统不管是开发、调试和维护,对一个项目来说是多么的重要,类似的日志框架还有GLog、boost log。
二、下载与安装
- $>tar xvf apr-1.4.6.tar.gz
- $>cd apr-1.4.6
- $>./configuer --prefix=/usr/local/apr
- $>make
- $>make install
- $>tar xvf apr-util-1.5.1.tar.gz
- $>cd apr-util-1.5.1
- $>./configure --prefix=/usr/local/apr --with-apr=/usr/local/apr
- $>make
- $>make install
- $>tar xvf apache-log4cxx-0.10.0.tar.gz
- $>cd apache-log4cxx-0.10.0
- $>./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr --with-charset=utf-8 --with-logchar=utf-8
- $>make
注意:由于我用的是ubuntu系统,默认编码是utf-8,因此必须要加上 --with-charset=utf-8 --with-logchar=utf-8,不然中文输出是一堆乱码。
- inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope
- make[3]: *** [inputstreamreader.lo] 错误 1
在网上找了相关资料,原来有几个.cpp文件缺少了一些引用头文件,添加上去即可。
- src/main/cpp/inputstreamreader.cpp添加#include <string.h>
- src/main/cpp/socketoutputstream.cpp添加#include <string.h>
- src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;
这些文件修改完之后,执行make和make install就可安装成功。
三、测试
- #include <log4cxx/logger.h>
- #include <log4cxx/basicconfigurator.h>
- #include <log4cxx/propertyconfigurator.h>
- #include <log4cxx/helpers/exception.h>
- #include <iostream>
- int main()
- {
- log4cxx::PropertyConfigurator::configureAndWatch("log4cxx.properties");
- log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("lib"));
- LOG4_DEBUG(logger, "this is log4cxx test");
- return 0;
- }
配置文件:log4cxx.properties
- # 设置root logger为DEBUG级别,使用了ca和fa两个Appender
- log4j.rootLogger=DEBUG,lib
- #对Appender lib进行设置:
- # 这是一个文件类型的Appender,
- # 其输出文件(File)为./lib.log,
- # 输出方式(Append)为覆盖方式,
- # 输出格式(layout)为PatternLayout
- log4j.appender.lib=org.apache.log4j.ConsoleAppender
- log4j.appender.lib.Threshold=DEBUG
- #log4j.appender.lib.DatePattern='log/'yyyy-MM-dd'_SysService.log'
- log4j.appender.lib.File=./log/output.log
- log4j.appender.lib.Append=true
- log4j.appender.lib.layout=org.apache.log4j.PatternLayout
- log4j.appender.lib.layout.ConversionPattern=[%-5p] %d %l : %m%n
- $>g++ -o test -I/usr/local/apr/include -L/usr/local/apr/lib -lapr-1 -laprutil-1 main.cpp
- $./test
defines.h:24:28: fatal error: log4cxx/logger.h: No such file or directory
#include <log4cxx/logger.h>
我是装在:/usr/local/log4cxx 目录
下面有2个目录,include和lib。
/usr/local/log4cxx/include/log4cxx 才是头文件。
我们在gcc加上-I/usr/local/log4cxx/include 即可。
加上lib目录:-L/usr/local/log4cxx/lib
使用时
//usr/local/apr/lib/libapr-1.so.0: undefined reference to `uuid_generate@UUID_1.0'
加上
参考:
http://blog.csdn.net/fhxpp_27/article/details/8280024
http://www.linuxidc.com/Linux/2012-07/66663.htm
log4cxx安装和使用的更多相关文章
- log4cxx安装使用
log4cxx安装使用 log4cxx现在是apache的一个项目,用来记录日志.看名字就知道,是给c++使用的. 环境(在以下2个环境中进行验证测试): gcc (Ubuntu 4.8.4-2ubu ...
- ubuntu下log4cxx安装使用
需要安装log4cxx,安装的过程中可是充满了坎坷...最大的问题是在make log4cxx时,总是报undefined XML什么什么的错误,查了一下也没解决了,然后把apr-utils删了重新装 ...
- 在RHEL5.2 64bit下编译安装log4cxx错误
apache-log4cxx.0.10.0 依赖于apache-apr和apache-apr-utils两个包 先安装他们俩,然后编译log4cxx,发现make失败,错误如下 ronized.o . ...
- log4cxx日志库RedHat下安装
今天领导交给我一个任务:把log4cxx库在Redhat系统上面安装起来 首先.我得到信息,安装这个库一共须要三个软件 apr-1.4.6.tar.gz apr-util-1.4.1.tar.gz a ...
- 编译安装log4cxx
1.介绍 Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调 ...
- (转)Linux下编译安装log4cxx
Linux下编译安装log4cxx 一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. log4cxx ...
- log4cxx入门第一篇--一个小例子
先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...
- log4cxx在linux下的编译使用
最近在linux下使用log4cxx库,按照其官方文档提供的方法来进行编译,不能成功,又利用google搜索了好几个中文博客上讲述在linux下编译使用log4cxx库的方法,依然不能成功,在这里我奉 ...
- log4cxx入门篇
log4cxx入门篇 先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88 ...
随机推荐
- powershell 批量生成文件
缘由 由于现在替省厅工作,年底了要向地市收很多文件,哪些地市已报,哪些没报,需要一目了然. 我的处理方式是收什么文件就针对该文件新建一个目录,然后在该目录下为所有地市建一个占位文件. 等收到项某市的材 ...
- Centos tar命令
打包文件同时压缩 tar -zcvf /file.tar.gz /directoryname
- 策略模式代替大量的if else
原代码 public class Example { public Double calRecharge(Double charge, RechargeTypeEnum type) { if (typ ...
- openCV中IplImage的使用
http://blog.csdn.net/welcome_xu/article/details/7650680 IplImage结构详细分析 IplImage 结构解读: typedef stru ...
- Windows下查看机器监听端口
1.查看所有端口占用情况 在开始-运行-cmd,输入:netstat –ano可以查看所有进程 2.查看指定端口的占用情况 netstat -an |findstr :21
- Visual Mingw
Visual-MinGW 是一个专门为MinGW所设计的IDE.如果,你曾经用过VC++ 6.0这个IDE,你的第一感觉就是,Visual-MinGW和VC++ 6.0非常相似.所以,对于曾经用惯VC ...
- 【Android开发学习笔记】【第十课】运动事件 之——触摸屏
概念 触摸屏 (TouchScreen) 和 滚动球(TrackBall)是Android 中除了键盘之外的主要输入设备. 而这两个事件都可以用运动事件(MotionEvent)用于接收他们的信息 直 ...
- PE文件格式图示
- JDK中的URLConnection参数详解
针对JDK中的URLConnection连接Servlet的问题,网上有虽然有所涉及,但是只是说明了某一个或几个问题,是以FAQ的方式来解决的,而且比较零散,现在对这个类的使用就本人在项目中的使用经验 ...
- Block作为property属性实现页面之间传值(代替Delegate代理与协议结合的方法)
需求:在ViewController中,点击Button,push到下一个页面NextViewController,在NextViewController的输入框TextField中输入一串字符,返回 ...