`
yand789
  • 浏览: 23164 次
社区版块
存档分类
最新评论

linux 安装 log4cxx

 
阅读更多
一个项目的服务器端在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的安装过程记录

    本文将详细介绍log4cxx在Windows和Linux下的安装步骤,以及基本的使用方法。 **一、Windows下的安装** 1. **下载依赖库**:首先,你需要下载`apache-log4cxx-0.10.0.zip`、`apr-1.2.11-win32-src.zip`、`apr-util-...

    log4cxx + apr + apr-util (linux) 安装使用

    log4cxx是apache的一款优秀的日志文件记录工具,然而,下载能够编译成功的,即log4cxx + apr + apr-util 能够兼容,编译通过的。当时就因为下载的不能够兼容,费了好的的功夫,现在把他们上传上来,供后来人使用

    log4cxx dll .lib .a .so 編譯 linux windows

    本文将深入探讨log4cxx库在Linux和Windows操作系统中的编译过程,以及其生成的.dll、.lib、.a和.so文件的用途和差异。 一、log4cxx简介 log4cxx是Apache软件基金会的一个项目,它是Java的日志框架log4j的C++版本。...

    log4cxx 的工程产生的lib dll

    log4cxx是Apache软件基金会开发的一个C++的日志记录框架,它是log4j的C++版本,广泛应用于Windows和Linux等操作系统中。本文将深入探讨log4cxx库的生成、使用以及可能遇到的问题,旨在为开发者提供详尽的参考。 ...

    log4cxx安装文件+Cygwin

    1. **在Windows上安装log4cxx**:由于log4cxx主要面向Linux环境,Cygwin的环境可以提供一个适宜的平台,在Windows上编译和运行log4cxx。 2. **开发和调试**:开发者可以利用Cygwin的命令行工具和编译环境,配合log4...

    apache-log4cxx-0.10.1.zip

    这个"apache-log4cxx-0.10.1.zip"压缩包包含了Log4cxx的0.10.1版本,这是一个稳定且广泛使用的版本,适合在Linux环境下进行日志管理和输出。 Log4cxx的设计目标是提供一个灵活的日志系统,允许开发者根据需要调整...

    日志打印输出log4cxx,可编译,带学习资料,也带自编译后的实例,及配置文件实例

    学习资料部分将涵盖log4cxx的安装、配置、API使用、日志布局和过滤器等主题。理解这些内容对于充分利用log4cxx的功能至关重要。例如,通过使用PatternLayout,你可以自定义日志输出的格式,包括时间戳、日志级别、...

    vs2015环境apache-log4cxx-0.10.0工程.zip

    Apache Log4cxx是一款由Apache软件基金会开发的日志记录库,专为C++程序员设计,提供了丰富的日志处理功能,适用于Windows以及各种Unix/Linux系统。它借鉴了Java界的Log4j设计理念,提供了灵活的日志配置,方便...

    log4cxx源代码(apache-log4cxx+apr+apr-util+sed)

    【标题】"log4cxx源代码(apache-log4cxx+apr+apr-util+sed)" 涉及的关键技术点主要包括log4cxx日志库、Apache Portable Runtime (APR) 和 APR-Util,以及文本处理工具sed。这些组件在软件开发,尤其是服务器端和...

    日志系统log4cxx移植

    log4cxx是一个高性能的C++日志库,本文档介绍了如何将其移植到嵌入式linux下,在使用过程遇到的问题以及解决方法。

    log4cpp-1.1.3代码交叉编译说明

    总之,交叉编译log4cpp涉及到选择正确的交叉编译工具链,正确配置编译选项,以及在目标平台上安装生成的库。这个过程对于在ARM设备上运行log4cpp并利用其强大的日志管理能力至关重要。正确执行这些步骤后,开发者...

    C++异步网络IO库,仿java的mina实现

    log4cxx log4j 的 C++ 版本,写日志的。 Postgresql开发 使用了 pqxx 库 这是基于 pq库(postgresql 的 c 语言api ) 的c++库 工程 core : 库工程 工程 tools: 例子 motcp socket存储转发功能,可以将通信的包以...

    log4cplus:log4cplus是一种易于使用的C ++日志记录API,可提供对日志管理和配置的线程安全,灵活且任意粒度的控制。 它是根据Java log4j API建模的

    在可能的情况下,该项目会从log4j(例如,从log4net,log4cxx,log4cpp)之外的其他日志记录库中获得启发。平台支援 3.0版及更高版本需要C ++ 17。 已移植到以下平台并在以下平台上进行了测试: 带有GCC版本8.3.0...

    apr-util-1.2.2.tar.gz_Linux/Unix编程_Unix_Linux_

    在Linux或Unix环境中,"apr-util"常常被用作log4cxx的基础组件,因为它的通用性和跨平台性使得它能方便地处理各种操作系统相关的任务,比如读写文件、数据库连接等,这对于构建高效稳定的应用日志系统至关重要。...

    cxx字节Data二面1

    此外,本文还涉及到链表的反转问题,即将单链表 1-&gt;2-&gt;3-&gt;4-&gt;5-&gt;6 反转为 5-&gt;6-&gt;3-&gt;4-&gt;1-&gt;2。这个问题可以使用迭代的方式解决,即使用两个指针来遍历链表,并将节点的顺序进行反转。 三、Git 在 Git 方面,本文...

    Linux下ubuntu eu部署

    ### Linux下Ubuntu 12.04 EU部署详解 #### 一、背景介绍 Ubuntu 12.04 (Precise Pangolin) 是一个长期支持版本(LTS),它提供了稳定且可靠的平台,非常适合服务器和企业级应用。本文将详细介绍如何在Ubuntu 12.04上...

    C++服务器程序demo

    log4cxx是Apache软件基金会的C++日志库,它模仿了Java的日志框架log4j。这个库提供了灵活的日志级别(如DEBUG、INFO、WARN、ERROR和FATAL),日志输出目的地(如文件、控制台、网络等),以及日志格式化等功能。在...

    Linux系统下GDB调试指南.docx

    安装适合当前Linux系统的GDB版本是进行调试的基础步骤之一: 1. 确认系统架构(x64或x86),下载并安装对应版本的GDB软件包。 2. 可以通过包管理器(如apt-get或yum)进行安装,例如: ``` sudo apt-get install ...

    3partlib

    4. **libdb_cxx-4.7.so**:这是Berkeley DB的C++接口库,Berkeley DB是一个键值存储系统,用于管理嵌入式数据库或作为应用程序的本地数据库。版本号4.7表明使用的是旧版库,可能用于数据持久化或缓存。 5. **...

    zlog使用教程-CN

    zlog是一款专为C语言设计的高效、安全、灵活的日志记录库,它借鉴并超越了log4j和log4cxx等同类产品,针对C语言的特性进行了优化。zlog的关键优势包括: 1. **高可靠性与性能**:zlog不仅提供了稳定的日志记录服务...

Global site tag (gtag.js) - Google Analytics