log4cxx是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,log4cxx是apache软件基金会的开源项目,基于APR实现跨平台支持。一个良好的日志系统不管是开发、调试和维护,对一个项目来说是多么的重要,类似的日志框架还有GLog、boost log。

依赖:apr、apr-util
apr、apr-util下载地址:http://apr.apache.org/download.cgi

二、下载与安装

环境:linux
依赖:apr、apr-util
apr、apr-util下载地址:http://apr.apache.org/download.cgi
 
安装步骤:
1.由于log4cxx是依赖于apr的,因此先安装apr和apr-util这两个库,我会将这两个库安装到同一个目录下;
下载完之后,当前目录有apr-1.4.6.tar.gzapr-util-1.5.1.tar.gz两个文件。
  1. $>tar xvf apr-1.4.6.tar.gz
  2. $>cd apr-1.4.6
  3. $>./configuer --prefix=/usr/local/apr
  4. $>make
  5. $>make install
目前apr安装完成,会在/usr/local下产生apr目录
  1. $>tar xvf apr-util-1.5.1.tar.gz
  2. $>cd apr-util-1.5.1
  3. $>./configure  --prefix=/usr/local/apr --with-apr=/usr/local/apr
  4. $>make
  5. $>make install
apr-util也会安装/usr/local/apr目录下
 
2.开始安装log4cxx,下载完之后,当前目录下有apache-log4cxx-0.10.0.tar.gz。
  1. $>tar xvf apache-log4cxx-0.10.0.tar.gz
  2. $>cd apache-log4cxx-0.10.0
  3. $>./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr  --with-charset=utf-8 --with-logchar=utf-8
  4. $>make

注意:由于我用的是ubuntu系统,默认编码是utf-8,因此必须要加上 --with-charset=utf-8 --with-logchar=utf-8,不然中文输出是一堆乱码。

这时候会出现这样的错误
  1. inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope
  2. make[3]: *** [inputstreamreader.lo] 错误 1

在网上找了相关资料,原来有几个.cpp文件缺少了一些引用头文件,添加上去即可。

  1. src/main/cpp/inputstreamreader.cpp添加#include <string.h>
  2. src/main/cpp/socketoutputstream.cpp添加#include <string.h>
  3. src/examples/cpp/console.cpp添加#include <string.h>;#include <stdio.h>;

这些文件修改完之后,执行make和make install就可安装成功。

 

三、测试

主函数代码:main.cpp
  1. #include <log4cxx/logger.h>
  2. #include <log4cxx/basicconfigurator.h>
  3. #include <log4cxx/propertyconfigurator.h>
  4. #include <log4cxx/helpers/exception.h>
  5. #include <iostream>
  6. int main()
  7. {
  8. log4cxx::PropertyConfigurator::configureAndWatch("log4cxx.properties");
  9. log4cxx::LoggerPtr logger(log4cxx::Logger::getLogger("lib"));
  10. LOG4_DEBUG(logger, "this is log4cxx test");
  11. return 0;
  12. }

配置文件:log4cxx.properties

  1. # 设置root logger为DEBUG级别,使用了ca和fa两个Appender
  2. log4j.rootLogger=DEBUG,lib
  3. #对Appender lib进行设置:
  4. # 这是一个文件类型的Appender,
  5. # 其输出文件(File)为./lib.log,
  6. # 输出方式(Append)为覆盖方式,
  7. # 输出格式(layout)为PatternLayout
  8. log4j.appender.lib=org.apache.log4j.ConsoleAppender
  9. log4j.appender.lib.Threshold=DEBUG
  10. #log4j.appender.lib.DatePattern='log/'yyyy-MM-dd'_SysService.log'
  11. log4j.appender.lib.File=./log/output.log
  12. log4j.appender.lib.Append=true
  13. log4j.appender.lib.layout=org.apache.log4j.PatternLayout
  14. log4j.appender.lib.layout.ConversionPattern=[%-5p] %d %l : %m%n
  1. $>g++ -o test -I/usr/local/apr/include -L/usr/local/apr/lib -lapr-1 -laprutil-1 main.cpp
  2. $./test
会在屏幕中打印出
[DEBUG] 2012年11月14日 15:16:17,890 main.cpp(10) : test
先写到这里,下篇将会介绍log4cxx的配置。
 
 
我使用报错,没找到文件:

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安装和使用的更多相关文章

  1. log4cxx安装使用

    log4cxx安装使用 log4cxx现在是apache的一个项目,用来记录日志.看名字就知道,是给c++使用的. 环境(在以下2个环境中进行验证测试): gcc (Ubuntu 4.8.4-2ubu ...

  2. ubuntu下log4cxx安装使用

    需要安装log4cxx,安装的过程中可是充满了坎坷...最大的问题是在make log4cxx时,总是报undefined XML什么什么的错误,查了一下也没解决了,然后把apr-utils删了重新装 ...

  3. 在RHEL5.2 64bit下编译安装log4cxx错误

    apache-log4cxx.0.10.0 依赖于apache-apr和apache-apr-utils两个包 先安装他们俩,然后编译log4cxx,发现make失败,错误如下 ronized.o . ...

  4. log4cxx日志库RedHat下安装

    今天领导交给我一个任务:把log4cxx库在Redhat系统上面安装起来 首先.我得到信息,安装这个库一共须要三个软件 apr-1.4.6.tar.gz apr-util-1.4.1.tar.gz a ...

  5. 编译安装log4cxx

    1.介绍 Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调 ...

  6. (转)Linux下编译安装log4cxx

    Linux下编译安装log4cxx 一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库.功能很不错.下面记录下它的编译和安装过程. log4cxx ...

  7. log4cxx入门第一篇--一个小例子

    先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88ab5a9d1f34693da ...

  8. log4cxx在linux下的编译使用

    最近在linux下使用log4cxx库,按照其官方文档提供的方法来进行编译,不能成功,又利用google搜索了好几个中文博客上讲述在linux下编译使用log4cxx库的方法,依然不能成功,在这里我奉 ...

  9. log4cxx入门篇

    log4cxx入门篇     先看官网:http://logging.apache.org/log4cxx/index.html 转载自:http://wenku.baidu.com/view/d88 ...

随机推荐

  1. DirectX基础学习系列5 融合技术

    7.1融合方程 1概念 融合技术将当前光栅化像素的颜色与以前已光栅化并处于同一个位置的像素颜色进行合成,即将当前要进行光栅化的三角形单元与已写入后台的像素进行融合 2需要遵循的原则: (1)先绘制不需 ...

  2. 类库引用EF

    安装EntityFramework 添加引用system.data.entity;

  3. Byte History

    https://en.wikipedia.org/wiki/Byte The term byte was coined by Werner Buchholz in July 1956, during ...

  4. Apache Kafka源码分析 - autoLeaderRebalanceEnable

    在broker的配置中,auto.leader.rebalance.enable (false) 那么这个leader是如何进行rebalance的? 首先在controller启动的时候会打开一个s ...

  5. mongodb 常用命令

    转自http://www.blogjava.net/waterjava/archive/2011/03/23/346819.html 命令行 --help 显示命令行参数 --nodb 不连接数据库方 ...

  6. Solaris 10下Qt编译Oracle 10g驱动

    上回书讲到<Oracle 10g在Solaris 10中安装详解>,现在开始用Qt来编译下Oracle 10g驱动吧!这样就可以通过Qt程序联入Oracle数据库了! Oracle的环境变 ...

  7. Qt使用一个事件队列对所有发出的事件进行维护(QObject的event()函数相当于dispatch函数),用EventLabel 继承QLabel作为例子(简单明了) good

    事件(event)是由系统或者 Qt 本身在不同的时刻发出的.当用户按下鼠标.敲下键盘,或者是窗口需要重新绘制的时候,都会发出一个相应的事件.一些事件在对用户操作做出响应时发出,如键盘事件等:另一些事 ...

  8. Java中重点关键词的区分

    1.final, finally, finalize的区别final-修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承. 因此一个类不能既被声明为 abs ...

  9. 将自己写的Python代码打包放到PyPI上

    如果是开源的Python代码,为了能够让大家更方便的使用,放到PyPI上也许是个非常不错的主意(PyPI:Python Package Index).刚开始我以为要将代码打包放到PyPI上是一件非常复 ...

  10. Magento订单打印(pdf格式)

    Magento自身包含有:打印发票单,打印装箱单,打印退款单.这些都是基于西方国家的习惯来布置的.公司有个需求就是打印订单的四联单,PDF格式的,要一周内完成.刚接到这个任务时,觉得头大,因为对于PH ...