zoukankan      html  css  js  c++  java
  • log4cxx日志库RedHat下安装

    今天领导交给我一个任务:把log4cxx库在Redhat系统上面安装起来

    首先。我得到信息,安装这个库一共须要三个软件

    apr-1.4.6.tar.gz

    apr-util-1.4.1.tar.gz

    apache-log4cxx-0.10.0.tar.gz

    安装顺序是从上到下的,为什么,由于后者的安装依赖前者。

    我整理了一下思路,有例如以下几个问题:

    1.安装log4cxx库到哪个文件夹?

    2.安装好之后怎么用?

    我首先想到的是网上查资料,结果非常多结果都显示:

    1.针对问题1,99%的都安装在/usr/local文件夹下(我的权限是普通用户。安装在/usr/local文件夹下须要root权限,我顿时打了个寒战。万一我安装错了,server暴了怎么办)

    2.针对问题2,由于99%的都是安装在/usr/local文件夹下。结果就是随便提供一个測试程序。直接来g++ test.cpp 其它简单參数

    我想了又想,终于依照第一步做了(在此之前我向领导要了管理员权限),安装好后。没什么问题,只是。接下来,在进行敲代码測试的时候,关于log4cxx库的文件都找不到。我崩溃了。这和网上说的不一样啊。

    遇到了一些挫折。终于我是搞出来了,就来详细说说我的步骤吧。

    1.把三个压缩包放置到一个你喜欢的文件夹下。比方/home/mac/log4cxx这个文件夹下

    2.在/home/mac/log4cxx文件夹下解压三个压缩包得到三个文件夹(解压缩命令tar zxvf 你的目标)

    3.在/home/mac/log4cxx文件夹下新建三个文件夹apr apr-util log4cxx作为三个包的安装文件夹(运行make install时的安装文件夹)

    4.首先进入apr-1.4.6文件夹运行./configure --prefix=/home/mac/log4cxx/apr配置apr包的安装文件夹为/home/mac/log4cxx/apr

    5.运行make

    6.运行make install

    7.进入apr-util-1.4.1文件夹运行./configure --prefix=/home/mac/log4cxx/apr-util --with-apr=/home/mac/log4cxx/apr意义和上面一步一样,只是多了个依赖关系

    8.运行make

    9.运行make install

    10.进入apache-log4cxx-0.10.0文件夹运行./configure --prefix=/home/mac/log4cxx/log4cxx --with-apr=/home/mac/log4cxx/apr --with-apr-util=/home/mac/log4cxx/apr-util意义和上面一步一样,依赖关系又体现了

    11.运行make

    12.运行make install

    13.此时使用命令ls 浏览新建的三个目录apr apr-util log4cxx,会发现里面有一些include啊。lib啊之类的目录

    14.由于測试程序要用到log4cxx的库文件,所以还须要一步。运行vi /home/mac/.bashrc 在里面加入两句

    LD_LIBRARY_PATH=/home/mac/log4cxx/log4cxx/lib

    export LD_LIBRARY_PATH 然后保存

    15.运行source /home/mac/.bashrc使刚刚做的变动生效

    16.编写一个測试程序main.cpp

    #include <log4cxx/logger.h>    
    #include <log4cxx/logstring.h> 
    #include <log4cxx/propertyconfigurator.h>
    
    int main(int argc, char* argv[]) 
    { 
            using namespace log4cxx;
    
            // 读取配置文件 
            PropertyConfigurator::configure("conf.log");
    
            // 建立两个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;  
    }
    
    17.编写文件conf.log这个log4cxx配置文件

    log4j.rootLogger=TRACE, stdout, logfile
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %c - %m%n
    
    log4j.appender.logfile=org.apache.log4j.RollingFileAppender
    log4j.appender.logfile.File=./ZW.log
    log4j.appender.logfile.MaxFileSize=100KB
    log4j.appender.logfile.MaxBackupIndex=10
    log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
    log4j.appender.logfile.layout.ConversionPattern=%d [%t] %-5p %c - %m% 
    18.运行g++ -I/home/mac/log4cxx/log4cxx/include -L/home/mac/log4cxx/log4cxx/lib -llog4cxx main.cpp 

    19.会生成a.out文件

    20.运行./a.out 终端输出

    2014-07-21 23:14:06,735 [0xb7fe4700] TRACE TraceYourMama - trace
    2014-07-21 23:14:06,736 [0xb7fe4700] WARN  TraceYourMama - warn
    2014-07-21 23:14:06,736 [0xb7fe4700] DEBUG TraceYourMama - debug
    2014-07-21 23:14:06,736 [0xb7fe4700] ERROR TraceYourMama - assert
    2014-07-21 23:14:06,736 [0xb7fe4700] FATAL TraceYourMama - fatal
    2014-07-21 23:14:06,736 [0xb7fe4700] TRACE Patch - trace
    2014-07-21 23:14:06,736 [0xb7fe4700] ERROR Patch - error
    
    同一时候,当前文件夹下也会有后缀名为log的文件产生

    再来从头回答那两个问题

    1.随你安装在哪个文件夹,是要gcc的时候指定好正确路径即可了

    2.还是gcc的 -I -L -i的參数运用值得深究

    好了。到眼下为止,最终让这个库起作用了。下一步就是分析怎样配置这个库。

    后记:

    1.为了支持中文。即能够输出中文到控制台或者文件,要在安装log4cxx时加上 --with-charset=utf-8 --with-logchar=utf-8,比如:

    ./configure --prefix=/home/mac/log4cxx/log4cxx --with-apr=/home/mac/log4cxx/apr --with-apr-util=/home/mac/log4cxx/apr-util--with-charset=utf-8 --with-logchar=utf-8

    2.为了输出Qt的QString类型的字符串,要这样用,LOG4CXX_INFO(logger,qstring.toStdString()),用LOG4CXX_INFO(logger,qstring.toStdString().c_str())会出问题

  • 相关阅读:
    星辰小队针对于软件“星遇”的10天冲刺——第2天
    石家庄地铁路线安排网站的最终版本——博客登记
    星辰小队针对于软件“星遇”的10天冲刺——第1天
    单词统计——基本Java实现(无特殊设置)
    周周总结——时时更新(第4学期,第10周)
    构建之法阅读笔记04
    用户模板和用户场景(星遇)
    周周总结——时时更新(第4学期,第9周)
    ios创建bundle的图片资源文件(转)
    GCD的多线程实现方式,线程和定时器混合使用
  • 原文地址:https://www.cnblogs.com/wzjhoutai/p/6773899.html
Copyright © 2011-2022 走看看