zoukankan      html  css  js  c++  java
  • Windows环境下log4cxx的编译及使用

     

    1.介绍

           Log4cxx是开放源代码项目Apache Logging Service的子项目之一,是Java社区著名的log4jc++移植版,用于为C++程序提供日志功能,以便开发者对目标程序进行调试和审计。有关log4cxx的更多信息可以从Apache Loggin Service的网站http://logging.apache.org获得。当前的最新版本为0.10.0,本文内容及示例代码都是基于此版本。

    2.获取软件包

           可以从官方网站(http://logging.apache.org/log4cxx/index.html)获取源代码,下载版本为apache-log4cxx-0.10.0,下载完成后解压缩到合适目录

    3.编译

           下载的原始文件包中没有包含编译后的开发库,需要自己编译生成,本文使用vc.net2003编译该源文件,编译时需要如下文件包:

           apr-1.2.11-win32-src.zipapr-util-1.2.10-win32-src.zip

    这两个压缩包的下载地址分别如下:

           http://archive.apache.org/dist/apr/apr-1.2.11-win32-src.zip

           http://archive.apache.org/dist/apr/apr-util-1.2.10-win32-src.zip

    下载完成后将这两个文件分别解压缩到和上面源代码相同的目录下。然后按照如下步骤进行编译:

    a.       apr-1.2.11-win32-src.zip解压后的文件名修改为:apr

    b.       apr-util-1.2.10-win32-src.zip解压后的文件名修改为:apr-util

    c.       通过vc.net2003DOS工具进入DOS窗口,此处直接在运行命令栏中输入cmd也可,不过为安全起见最后从.net2003的工具栏进入DOS界面

    d.       使用cd 命令进入apache-log4cxx-0.10.0目录

    e.       输入configure命令,执行configure.bat批处理文件

    f.        输入configure-aprutil命令,执行configure-aprutil.bat批处理文件。

    注意:由于在configure-aprutil.bat文件中使用了linux下的sed命令,所以该步可能会出现类似找不到sed命令的错误,这是由于在windows环境下编译的缘故。可以使用如下两种方法解决:1.下载一个sed for windows的工具;2.使用Cygwin;不过本人强烈推荐使用第二种方法,因为有些sed for windows的工具存在bug。关于如何在windows环境下安装Cygwin请看文章后名说明。

    g.     使用vc.net2003打开Projects文件夹下的log4cxx.dsw项目,将log4cxx工程设为启动项目,然后编译即可

    h.       编译成功后,就可以在projectsDebuge或者Release文件夹下看到libdll文件

    4.项目环境设置

           有两种方法可以设置环境:通过.net2003的工具栏或者使用工程属性栏配置,这里只介绍第二种,本文将通过下面的实例程序介绍如何使用第二种方法设置环境

    5.实例代码

           a.打开.net2003,新建一个空白的win32控制台工程,假设工程名为Test

           b.添加一个cpp文件,文件名随便命名

           c.右键点击Test工程,选择属性,然后在C++选项卡中添加附加库目录,注意该目录为../ apache-log4cxx-0.10.0/src/main/include

           d.在属性的链接器输入选项卡的附加依赖项中添加” log4cxx.lib”       

           e.在cpp文件中输入如下测试代码:

    #include <log4cxx/logger.h>

    #include <log4cxx/PropertyConfigurator.h>

     

    using namespace std;

    using namespace log4cxx;

     

    int main(int argc, char* argv[])

    {

         string trace = "fa";

         string Property = "./log.properties";

         log4cxx::PropertyConfigurator::configure(Property);

         LoggerPtr logger = Logger::getLogger(trace);

         logger->info(("How to use?"));

         LOG4CXX_INFO(logger, ("你说hello"));

     

         for(int i = 0; i < 2; i++)

         {

             LOG4CXX_DEBUG(logger, "DEBUG");

             LOG4CXX_INFO(logger, "INFO"); 

             LOG4CXX_WARN(logger, "WARN");

             LOG4CXX_ERROR(logger, "ERROR");

         }

     

         return 0;

    }

           f新建一个文本文件,命名为log4cxx.properties,并键入如下内容:

    # 设置root loggerDEBUG级别,使用了cafa两个Appender

    log4j.rootLogger=DEBUG, ca, fa

     

    #Appender fa进行设置:

    # 这是一个文件类型的Appender

    # 其输出文件(File)为./output.log

    # 输出方式(Append)为覆盖方式,

    # 输出格式(layout)为PatternLayout

    log4j.appender.fa=org.apache.log4j.FileAppender

    log4j.appender.fa.File=./output.log

    log4j.appender.fa.Append=false

    log4j.appender.fa.layout=org.apache.log4j.PatternLayout

    log4j.appender.fa.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n

     

    #Appender ca进行设置

    # 这是一个控制台类型的Appender

    #  输出格式(layout)为PatternLayout

    log4j.appender.ca=org.apache.log4j.ConsoleAppender

    log4j.appender.ca.layout=org.apache.log4j.PatternLayout

    log4j.appender.ca.layout.ConversionPattern=%d [%t] %-5p %.16c - %m%n

           g 将编译好的log4cxx.liblog4cxx.dll及上面的log4cxx.properties文件拷贝之Test工程目录

          h.编译运行该文件,可以看到控制台输出相关日志,并且在工程目录下会得到一个output.log的日志文件

    6.补充说明

           上面的log4cxx.properties文件为log4xxx的配置文件,该文件主要用来设置该如何生成日志文件及日志文件的格式等信息,关于配置文件的说明可以参考如下文档:

    http://fanqiang.chinaunix.net/app/other/2006-06-22/4640.shtml

    7Cygwin的安装

           关于Cygwin的安装可以参考如下说明http://www.cygwin.cn/site/install/。假设安装目录为D:/cygwin,安装成功后需要设置一下环境变量,可按如下步骤设置环境变量:

    a.  右键点击我的电脑->属性->高级->环境变量

    b.  在下面的系统变量中选择Path变量,在最后面添加D:/cygwin/bin即可

     

  • 相关阅读:
    【Leetcode】23. Merge k Sorted Lists
    【Leetcode】109. Convert Sorted List to Binary Search Tree
    【Leetcode】142.Linked List Cycle II
    【Leetcode】143. Reorder List
    【Leetcode】147. Insertion Sort List
    【Leetcode】86. Partition List
    jenkins 配置安全邮件
    python 发送安全邮件
    phpstorm 同步远程服务器代码
    phpUnit 断言
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167992.html
Copyright © 2011-2022 走看看