首页 > 服务端开发 > 如何在ubuntu中安装 log4cxx - 踩坑记录
2019
05-17

如何在ubuntu中安装 log4cxx - 踩坑记录

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

安装步骤:

因为log4cxx源码安装 需要依赖 apr 和 apr-util

所以要先把依赖库装上。

1.先安装apr

$>tar xvf apr-1.6.2.tar.gz
$>cd apr-1.6.2
$>./configure--prefix=/usr/local //指定apr安装目录
$>make
$>make install

如果make的时候碰到报错:cannot remove `libtoolT’: No such file or directory
修改makeifle文件:将 $RM "$cfgfile" 注释掉。安装libtoolT并不能解决这个问题。重新make即可。

2.安装apr-util

$>tar xvf apr-util-1.6.0.tar.gz
$>cd apr-util-1.6.0
$>./configuer --prefix=/usr/local --with-apr=/usr/local //设置apr-util安装目录 并且指定apr库的目录
$>make
$>make install

如果make的时候碰到报错:xml/apr_xml.c:35:19: error: expat.h: No such file or directory
请安装expat库。下载地址:https://libexpat.github.io/

$>tar jxvf expat-2.2.4.tar.bz2
$>cd expat-2.2.4
$>./configure --prefix=/usr/local/
$>make
$>make install

重新make安装即可。

3、安装log4cxx

$>tar xvf apache-log4cxx-0.10.0.tar.gz
$>cd apache-log4cxx-0.10.0
$>./configuer --prefix=/usr/local --with-apr=/usr/local --with-apr-util=/usr/local --with-charset=utf-8 --with-logchar=utf-8
$>make

如果make的时候碰到报错:inputstreamreader.cpp:66: error: 'memmove' was not declared in this scope make[3]: ***[inputstreamreader.lo] 错误 1
有几个.cpp文件缺少了一些引用头文件,添加上去即可。

src/main/cpp/inputstreamreader.cpp添加#include
src/main/cpp/socketoutputstream.cpp添加#include
src/examples/cpp/console.cpp添加#include ;#include ;

重新make安装即可。

到此,log4cxx就全部安装完成了。

因为编译成的是共享库,最后还要设置下搜索目录,编辑~/.bashrc,添加下面两行

LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH

然后执行命令使配置生效:source ~/.bashrc

最后写个程序,测试下。

#include <log4cxx/logger.h>
#include <log4cxx/logstring.h>
#include <log4cxx/propertyconfigurator.h>

int main(int argc, char* argv[])
{
using namespace log4cxx;

// 读取配置文件
PropertyConfigurator::configure("log4cxx.cfg");

// 建立两个logger
LoggerPtr logger1 = Logger::getLogger("TraceYourMama");
LoggerPtr logger2 = Logger::getLogger("Patch");

LOG4CXX_TRACE(logger1, "跟踪");
LOG4CXX_WARN(logger1, "警告");
LOG4CXX_DEBUG(logger1, "调试");
LOG4CXX_ASSERT(logger1, false, "断言");
LOG4CXX_FATAL(logger1, "致命");

LOG4CXX_TRACE(logger2, "跟踪");
LOG4CXX_ERROR(logger2, "错误");
return 0;
}

编译链接 $g++ -o main main.cpp -llog4cxx
这里需要配置log4cxx配置文件。

下面是一个最简单的配置文件:

log4j.rootLogger=debug, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
# Pattern to output the caller's file name and line number.
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=./hello.log
log4j.appender.R.MaxFileSize=100KB
# Keep one backup file
log4j.appender.R.MaxBackupIndex=10
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%5p %c [%t] (%F:%L) - %m%n

最后编辑:
作者:搬运工
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。