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

log4cxx现在是apache的一个项目,用来记录日志。看名字就知道,是给c++使用的。

环境(在以下2个环境中进行验证测试):

gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4

gcc (GCC) 4.4.7 20120313 (Red Hat 4.4.7-16)

log4cxx依赖于apache 的 apr 和 apr-util,所以安装顺序是: apr, apr-util, log4cxx。

1.软件包下载
apr: http://apr.apache.org/download.cgi
apr-util: http://apr.apache.org/download.cgi
log4cxx: http://logging.apache.org/log4cxx/download.html

2.安装apr
#tar xzvf apr-1.5.2.tar.bz2
#cd apr-1.5.2
#./configure --prefix=/usr/local/apr
#make
#make install

3.安装apr-util
#tar xzvf apr-util-1.5.4.tar.bz2
#cd apr-util-1.5.4
#./configure --prefix=/usr/local/apr-util --with-apr=/usr/local/apr
#make
#make install

4.安装log4cxx
#tar xzf apache-log4cxx-0.10.0.tar.gz
#cd apache-log4cxx-0.10.0
log4cxx直接make会报类似error: ‘memmove’ was not declared in this scope的错误,参考前人的工作,修改以下源文件:
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>
#./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr --with-apr-util=/usr/local/apr-util
#make
#make install

5.把编译后的库加载到环境变量中(实际使用和发布使用log4cx库需要其他更多的工作)
export LD_LIBRARY_PATH=/usr/local/apr/lib/:/usr/local/apr-util/lib/:/usr/local/log4cxx/lib/

6.测试代码
test.cpp

#include <iostream>
#include <log4cxx/logger.h>
#include <log4cxx/propertyconfigurator.h>
#include <log4cxx/helpers/exception.h> using namespace std;
using namespace log4cxx;
using namespace log4cxx::helpers; static const string CONF_LOG_FILE = "/home/fg/src/work/test/test.properties"; LoggerPtr logger(Logger::getRootLogger()); int main(void)
{
try {
PropertyConfigurator::configure(CONF_LOG_FILE);
LOG4CXX_INFO(logger, "Init() success.");
cout << "success" << endl;
} catch (Exception &) {
cout << "log4cxx init error" << endl;
}
return ;
} test.cpp

test.properties文件的内容:

log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log.dat
log4j.appender.file.MaxFileSize=20MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

test.properties

log4j.rootLogger=INFO, file
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.File=log.dat
log4j.appender.file.MaxFileSize=20MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n

7.编译:
g++ -o test0 test.cpp -L/usr/local/log4cxx/lib -llog4cxx -I/usr/local/log4cxx/include
运行:
./test 
可以看到生成了log.dat文件,里面写入了LOG4CXX_INFO()输出的日志内容。

参考资料:
1.http://blog.chinaunix.net/uid-24512513-id-3195404.html
2.http://zipperary.com/2015/08/04/log4cxx/

最新文章

  1. windows环境下搭建vue+webpack的开发环境
  2. psr的规范
  3. js-字符串转化日期
  4. hbase的查询scan功能注意点(setStartRow, setStopRow)
  5. nginx yii2环境配置
  6. xscript脚本
  7. osg通过glsl实现一个平面的水效果(法线贴图) 【转】
  8. java_jdbc_可滚动结果集与分页
  9. python笔记之Cmd模块
  10. 第一百零九节,JavaScript面向对象与原型
  11. 【笔记】Loadrunner添加OS类型为Linux的服务器
  12. Ubuntu 14.04 安装LNMP(nginx/1.12.1+php7.1.9+mysql5.7.19)环境
  13. jenkins+supervisor实现django项目的自动部署(ubuntu)
  14. webpack4.0各个击破(5)—— Module篇
  15. 关于测绘软件南方CASS(7.0)成图系统的使用心得
  16. Spring Boot 揭秘与实战(二) 数据存储篇 - MyBatis整合
  17. centOS7中Mariadb数据库安装与基本管理
  18. CryptoJS与C#AES加解密互转
  19. PCA vs Linear Regression 可视化理解
  20. 20172329 2018-2019 《Java软件结构与数据结构》实验三报告

热门文章

  1. jquery+flask+keras+nsfw快速搭建一个简易鉴黄工具
  2. 准备openstack基础环境
  3. redis数据库安装
  4. jquery(第一章)认识jquery
  5. 一个基于Unix套接字的注册登录系统
  6. jdk1.8 Maven 的安装教程
  7. Spring4学习回顾之路10-Spring4.x新特性:泛型依赖注入
  8. NOIP2012 DAY1 T2 国王游戏
  9. 使用rsync工具构建php项目管理平台
  10. shell习题第12题:批量创建用户