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即可

     

  • 相关阅读:
    SAP常用Tcode汇总
    SAP物料管理标准报表
    Linux系统将大量的图片合成.gif
    fluent对网格进行透明显示
    fluent计算结果进行镜像显示
    Fluent显示中间截面附近的颗粒
    fluent提取壁面上一条线上的冲蚀磨损量
    cfdemSolverPisoScalar和cfdemSolverPisoSTM的区别
    paraview处理fluent 2020R2计算结果
    关于fluent中的压力(二)和(三)
  • 原文地址:https://www.cnblogs.com/zhangyunlin/p/6167992.html
Copyright © 2011-2022 走看看