一个项目的服务器端在Linux平台下,用到了开源日志库log4cxx,这个库是apache项目的一个子库。功能很不错。下面记录下它的编译和安装过程。
log4cxx的官方下载地址是http://logging.apache.org/log4cxx/index.html,我用的是0.10.0版本。
为了编译它,还需要两个辅助库,apr,和apr-util,可以在这里下载http://apr.apache.org/download.cgi,我用的版本分别是apr-1.3.8.tar.gz和apr-util-1.3.9.tar.gz。
第一步安装apr-1.3.8,顺序不能错,它必须首选安装
$tar zxvf apr-1.3.8.tar.gz
$cd apr-1.3.8
$./configure --prefix=/usr/local
$make
$su root
$make install
然后安装apr-util-1.3.9
$tar zxvf apr-util-1.3.9.tar.gz
$cd apr-util-1.3.9
$./configure --prefix=/usr/local --with-apr=/usr/local/apr
$make
$su root
$make install
configure选项 --with-apr=/usr/local/apr指定apr库的位置
最后就可以安装log4cxx了
$tar zxvf apache-log4cxx-0.10.0.tar.gz
$cd apache-log4cxx-0.10.0
$configure --prefix==/usr/local
(
或者 ./configure --prefix=/usr/local/log4cxx --with-apr=/usr/local/apr –-with-apr-util=/usr/local/apr-util)
$make
$su root
$make install
修改Log4cxx程序
1.vimsrc/main/cpp/inputstreamreader.cpp
增加#include <string.h>;
#include<log4cxx/logstring.h>
#include<log4cxx/helpers/inputstreamreader.h>
#include<log4cxx/helpers/exception.h>
#include<log4cxx/helpers/pool.h>
#include<log4cxx/helpers/bytebuffer.h>
+
#include<string.h>
+
否则会出现inputstreamreader.cpp:66: error: 'memmove' was not declared in thisscope
make[3]: ***[inputstreamreader.lo] 错误 1
2.vimsrc/main/cpp/socketoutputstream.cpp
增加#include <string.h>;
#include<log4cxx/logstring.h>
#include<log4cxx/helpers/socketoutputstream.h>
#include<log4cxx/helpers/socket.h>
#include<log4cxx/helpers/bytebuffer.h>
+
#include<string.h>
+
否则会出现socketoutputstream.cpp:52: error: 'memcpy' was not declared in thisscope
3.vimsrc/examples/cpp/console.cpp
增加#include <string.h>,#include <stdio.h>;
+
#include<stdio.h>
+
#include<stdlib.h>
+
#include<string.h>
+
#include<log4cxx/logger.h>
#include<log4cxx/consoleappender.h>
#include<log4cxx/simplelayout.h>
#include<log4cxx/logmanager.h>
#include<iostream>
#include<locale.h>
否则会出现
console.cpp:In function ‘int main(int, char**)’:
console.cpp:58:错误:‘puts’在此作用域中尚未声明
第五步:配置Log4cxx环境
ExportLD_LIBRARY_PATH=/usr/local/apr/bin/:/usr/local/apr-util/bin:/usr/local/log4cxx/bin/:$LD_LIBRARY_PATH
经过上面的五步,Log4cxx在Linux下的环境配置已经完毕。
下面是测试实例:
第一步:编写Log4cxx配置文件:test.properties
# Root logger
Log4j.rootLogger=DEBUG,list
# Appender:list
log4j.appender.list=org.apache.log4j.FileAppender
log4j.appender.list.File=./list.log
log4j.appender.list.ImmediateFlush=true
log4j.appender.list.Append=true
log4j.appender.list.layout=org.apache.log4j.PatternLayout
log4j.appender.list.layout.ConversionPattern=%d{yyyy-MM-ddHH:mm:SS} %5p -%m %n
第二步:编写测试程序
#include<log4cxx/logger.h>
#include<log4cxx/propertyconfigurator.h>
usingnamespace log4cxx;
int main()
{
// Read configure file
PropertyConfigurator::configure("./test.properties");
// Get root logger
LoggerPtr rootLogger = Logger:getRootLogger();
// Log information
LOG4CXX_TRACE(rootLogger, "TRACE");
LOG4CXX_DEBUG(rootLogger, "DEBUG");
LOG4CXX_WARN(rootLogger, "WARN");
LOG4CXX_INFO(rootLogger, "INFO");
LOG4CXX_ERROR(rootLogger, "ERROR");
return 0;
}
第三步:编译
g++ -o testtest.cc –L/usr/local/log4cxx/bin –llog4cxx –I/usr/local/log4cxx/include
执行完后生成test可执行文件
第四步:运行
./test
以上是Log4cxx在Linux下的测试实例。
注:其中本节涉及到的Linux相关命令可以查询相关资料了解。
因为编译成的是共享库,最后还要设置下搜索目录,编辑~/.bashrc,添加下面两行
LD_LIBRARY_PATH=/usr/local/lib
export LD_LIBRARY_PATH
OK,至此log4cxx就安装完毕了。
最后写个程序,测试下。
#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
OK,打完手工。
分享到:
相关推荐
本文将详细介绍log4cxx在Windows和Linux下的安装步骤,以及基本的使用方法。 **一、Windows下的安装** 1. **下载依赖库**:首先,你需要下载`apache-log4cxx-0.10.0.zip`、`apr-1.2.11-win32-src.zip`、`apr-util-...
log4cxx是apache的一款优秀的日志文件记录工具,然而,下载能够编译成功的,即log4cxx + apr + apr-util 能够兼容,编译通过的。当时就因为下载的不能够兼容,费了好的的功夫,现在把他们上传上来,供后来人使用
本文将深入探讨log4cxx库在Linux和Windows操作系统中的编译过程,以及其生成的.dll、.lib、.a和.so文件的用途和差异。 一、log4cxx简介 log4cxx是Apache软件基金会的一个项目,它是Java的日志框架log4j的C++版本。...
log4cxx是Apache软件基金会开发的一个C++的日志记录框架,它是log4j的C++版本,广泛应用于Windows和Linux等操作系统中。本文将深入探讨log4cxx库的生成、使用以及可能遇到的问题,旨在为开发者提供详尽的参考。 ...
1. **在Windows上安装log4cxx**:由于log4cxx主要面向Linux环境,Cygwin的环境可以提供一个适宜的平台,在Windows上编译和运行log4cxx。 2. **开发和调试**:开发者可以利用Cygwin的命令行工具和编译环境,配合log4...
这个"apache-log4cxx-0.10.1.zip"压缩包包含了Log4cxx的0.10.1版本,这是一个稳定且广泛使用的版本,适合在Linux环境下进行日志管理和输出。 Log4cxx的设计目标是提供一个灵活的日志系统,允许开发者根据需要调整...
学习资料部分将涵盖log4cxx的安装、配置、API使用、日志布局和过滤器等主题。理解这些内容对于充分利用log4cxx的功能至关重要。例如,通过使用PatternLayout,你可以自定义日志输出的格式,包括时间戳、日志级别、...
Apache Log4cxx是一款由Apache软件基金会开发的日志记录库,专为C++程序员设计,提供了丰富的日志处理功能,适用于Windows以及各种Unix/Linux系统。它借鉴了Java界的Log4j设计理念,提供了灵活的日志配置,方便...
【标题】"log4cxx源代码(apache-log4cxx+apr+apr-util+sed)" 涉及的关键技术点主要包括log4cxx日志库、Apache Portable Runtime (APR) 和 APR-Util,以及文本处理工具sed。这些组件在软件开发,尤其是服务器端和...
log4cxx是一个高性能的C++日志库,本文档介绍了如何将其移植到嵌入式linux下,在使用过程遇到的问题以及解决方法。
总之,交叉编译log4cpp涉及到选择正确的交叉编译工具链,正确配置编译选项,以及在目标平台上安装生成的库。这个过程对于在ARM设备上运行log4cpp并利用其强大的日志管理能力至关重要。正确执行这些步骤后,开发者...
log4cxx log4j 的 C++ 版本,写日志的。 Postgresql开发 使用了 pqxx 库 这是基于 pq库(postgresql 的 c 语言api ) 的c++库 工程 core : 库工程 工程 tools: 例子 motcp socket存储转发功能,可以将通信的包以...
在可能的情况下,该项目会从log4j(例如,从log4net,log4cxx,log4cpp)之外的其他日志记录库中获得启发。平台支援 3.0版及更高版本需要C ++ 17。 已移植到以下平台并在以下平台上进行了测试: 带有GCC版本8.3.0...
在Linux或Unix环境中,"apr-util"常常被用作log4cxx的基础组件,因为它的通用性和跨平台性使得它能方便地处理各种操作系统相关的任务,比如读写文件、数据库连接等,这对于构建高效稳定的应用日志系统至关重要。...
此外,本文还涉及到链表的反转问题,即将单链表 1->2->3->4->5->6 反转为 5->6->3->4->1->2。这个问题可以使用迭代的方式解决,即使用两个指针来遍历链表,并将节点的顺序进行反转。 三、Git 在 Git 方面,本文...
### Linux下Ubuntu 12.04 EU部署详解 #### 一、背景介绍 Ubuntu 12.04 (Precise Pangolin) 是一个长期支持版本(LTS),它提供了稳定且可靠的平台,非常适合服务器和企业级应用。本文将详细介绍如何在Ubuntu 12.04上...
log4cxx是Apache软件基金会的C++日志库,它模仿了Java的日志框架log4j。这个库提供了灵活的日志级别(如DEBUG、INFO、WARN、ERROR和FATAL),日志输出目的地(如文件、控制台、网络等),以及日志格式化等功能。在...
安装适合当前Linux系统的GDB版本是进行调试的基础步骤之一: 1. 确认系统架构(x64或x86),下载并安装对应版本的GDB软件包。 2. 可以通过包管理器(如apt-get或yum)进行安装,例如: ``` sudo apt-get install ...
4. **libdb_cxx-4.7.so**:这是Berkeley DB的C++接口库,Berkeley DB是一个键值存储系统,用于管理嵌入式数据库或作为应用程序的本地数据库。版本号4.7表明使用的是旧版库,可能用于数据持久化或缓存。 5. **...
zlog是一款专为C语言设计的高效、安全、灵活的日志记录库,它借鉴并超越了log4j和log4cxx等同类产品,针对C语言的特性进行了优化。zlog的关键优势包括: 1. **高可靠性与性能**:zlog不仅提供了稳定的日志记录服务...