ubuntu下log4cxx安装使用

摘要:
需要安装Log4cxx。安装过程充满了困难……最大的问题是,在制作log4cxx时,总是会报告未定义的XML错误。检查后,问题仍未解决。然后,删除apr-utils并重新安装它们。Log4cxx现在是用于日志记录的Apache项目。你可以从名字看出它是用于C++的。环境:gcc4.8.4gcc4.4.720120313log4cxx取决于apache的apr和apr-util,因此安装顺序为:apr、apr-util和log4cxx。

需要安装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 0;
}

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/

免责声明:文章转载自《ubuntu下log4cxx安装使用》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇C++ -- VLD(Visual LeakDetector)内存泄露库的使用c# CSV读入DataSet下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Java中实现Http请求并获取响应数据

目录 前言 方式一:功能实现类 java.net.HttpURLConnection 方式二:功能实现类 org.apache.http.client.methods.HttpGet 前言 在演示的功能代码中使用的请求http地址为:http://timor.tech/api/holiday/year/ 接口说明:获取指定年份或年月份的所有节...

Linux加固

一、linux下挂载iso光盘镜像     1、#mkdir  /mnt/vcdrom          ————建立一个目录用来作挂接点       2、#mount  –o  loop  –t  iso9660 /root/XX.iso  /mnt/vcdrom ————将root目        录下的XX.ISO挂载到/mnt/vcdrom下。 二...

QList内存释放(看它内部存储的是否是Object,另外还有qDeleteAll)

QList<T> 的释放分两种情况: 1.T的类型为非指针,这时候直接调用clear()方法就可以释放了,看如下测试代码 #include <QtCore/QCoreApplication>#include <QList>#include <QString> int main(int argc, char *...

win7 64 &amp;amp;vs2010 与 opengl配置

http://blog.csdn.net/lixam/article/details/7618015 http://blog.sina.com.cn/s/blog_7745fc8601017m36.html _________________________________________________________________ 我的配置: 1....

使用ApachePOI创建带图片的Excel

  最近一个项目中使用到了列表数据导出为Excel表格的功能,项目中是使用了Apache的POI来生成Excel文件。   由于使用到的技术有一定的复杂度,我在此特别列出一些实现上的细节作为记录和备忘。   首先我们要用到的jar包是POI,我使用的是项目框架中的,版本可能有一些老,不过功能还算完整。      我先把代码贴一些出来,并解释一下: 1 p...

Log4j2中RollingFile的文件滚动更新机制

一、什么是RollingFile RollingFileAppender是Log4j2中的一种能够实现日志文件滚动更新(rollover)的Appender。 rollover的意思是当满足一定条件(如文件达到了指定的大小,达到了指定的时间)后,就重命名原日志文件进行归档,并生成新的日志文件用于log写入。如果还设置了一定时间内允许归档的日志文件的最大数量...