【学习笔记】log4cxx安装和使用

一、简介

log4cxx是Java社区著名的log4j的c++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计,log4cxx是apache软件基金会的开源项目,基于APR实现跨平台支持。一个良好的日志系统不管是开发、调试和维护,对一个项目来说是多么的重要,我想做过开发的同学深知这点。我用过的日志框架比较少,所以在这里不做与其它日志框架的比较,类似的日志框架还有GLog、boost log,如果有兴趣可以去研究一下。
其实刚工作时,9c的pass9项目中就需要日志系统,只是那时候还不知道log4cxx这个好东西,只能自己动手实现了一个简单,主要是用到了c函数的可变参数,值得注意的是线程安全的问题,所以在写文件时要加互斥锁,为了提高性能,还需注意文件块大小问题,当然了,功能特别简单,只有控制台和文件输出,有等级、时间、线程号、文件名、行号、函数名这些输出。

二、下载与安装

环境: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两个文件。
$>tar xvf apr-1.4.6.tar.gz
$>cd apr-1.4.6
$>./configuer --prefix=/usr/local/apr
$>make
$>make install


目前apr安装完成,会在/usr/local下产生apr目录
$>tar xvf apr-util-1.5.1.tar.gz
$>cd apr-util-1.5.1
$>./configuer --prefix=/usr/local/apr --with-apr=/usr/local/apr
$>make
$>make install


apr-util也会安装/usr/local/apr目录下

2.开始安装log4cxx,下载完之后,当前目录下有apache-log4cxx-0.10.0.tar.gz
$>tar xvf apache-log4cxx-0.10.0.tar.gz
$>cd apache-log4cxx-0.10.0
$>./configuer --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就可安装成功。

三、测试

主函数代码:main.cpp
#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

会在屏幕中打印出
[DEBUG] 2012年11月14日 15:16:17,890 main.cpp(10) : test
先写到这里,下篇将会介绍log4cxx的配置。


  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要在CentOS 7上安装log4cxx,您可以按照以下步骤进行操作: 1. 首先,您需要下载apr和apr-util的安装包。您可以从apr的官方网站(http://apr.apache.org/)下载apr的安装包,从log4cxx的官方网站(http://logging.apache.org/log4cxx/latest_stable/download.html)下载log4cxx安装包。[1] 2. 解压log4cxx安装包。您可以使用以下命令解压安装包: ``` $ tar -zxvf apache-log4cxx-0.10.0.tar.gz ``` 3. 进入解压后的目录: ``` $ cd apache-log4cxx-0.10.0 ``` 4. 运行配置命令,指定安装路径和apr以及apr-util的路径: ``` $ ./configure --prefix=/usr/local/ --with-apr=/usr/local/ --with-apr-util=/usr/local/ --with-charset=utf-8 --with-logchar=utf-8 ``` 5. 编译log4cxx: ``` $ make ``` 6. 使用管理员权限安装log4cxx: ``` $ sudo make install ``` 这样,log4cxx就会被安装在您指定的路径下。请确保您已经正确安装了apr和apr-util,并且路径设置正确。[2] 如果您还需要安装apr-util,您可以按照以下步骤进行操作: 1. 解压apr-util的安装包: ``` $ tar -zxvf apr-util-1.5.4.tar.gz ``` 2. 进入解压后的目录: ``` $ cd apr-util-1.5.4 ``` 3. 运行配置命令,指定安装路径和apr的路径: ``` $ ./configure --prefix=/usr/local --with-apr=/usr/local ``` 4. 编译apr-util: ``` $ make ``` 5. 使用管理员权限安装apr-util: ``` $ sudo make install ``` 这样,apr-util就会被安装在您指定的路径下。请确保您已经正确安装了apr,并且路径设置正确。[3] 请注意,安装过程中可能会出现依赖项缺失或其他错误。如果遇到问题,请根据错误信息进行相应的解决。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值