zoukankan      html  css  js  c++  java
  • Log4cpp 编译+引用

    一 Log4cpp介绍

      Log4cpp 类似的支持库还包括Java(log4j),C++(log4cpp、log4cplus),C(log4c),python(log4p)等。

    log4c... 是基于log4j的一系列的c++移植版本,使用了log4j的模式结构,目前主要有以下几个版本: 
    1. log4cxx ,Apache下的孵化项目,不能独立编译,依赖于APR,编译比较麻烦,2008年以后就没再更新;
    2. log4cplus ,最近一次更新2016-01-16,不依赖于第三方库;
    3. log4cpp ,也不依赖与第三方库,与log4cplus功能类似,但是简化了一些实现,增加了一些功能;

    Log4cpp编译

      1、下载

      文件名: log4cpp-1.1.1.tar.gz

      下载地址: http://sourceforge.net/projects/log4cpp/files/log4cpp-1.1.x%20%28new%29/log4cpp-1.1/

      2、编译环境

      目标平台:Windows 8.1、VS2015(v140)

      3、编译过程

      3.1 解压

          将log4cpp-1.1.1.tar.gz解压缩到:D:develop_projectlog4cpp-1.1.3。

        3.2 编译

         打开msvc10.sln

              使用VS2015打开msvc10.sln:D:develop_projectlog4cpp-1.1.3log4cppmsvc10msvc10.sln。

            编译log4cpp、log4cppLIB

            将sln中的test的工程删除,只保留log4cpp、log4cppLIB,进行编译。 

      4、报错

        错误 C2084 函数“int snprintf(char *const ,const std::size_t,const char *const ,...)”已有主体 log4cpp d:develop_projectlog4cpp-1.1.3log4cppsrcsnprintf.c 536 

        解决方法:定位到这个方法,将这个方法整个注释掉。(这样做目前未发现问题)

        重新编译后,成功。

          生成log4cpp.dll、log4cpp.lib,在目录:D:develop_projectlog4cpp-1.1.3log4cppmsvc10log4cppDebug下。

    三 引用 

      1、头文件 *.h

      打开“附加包含目录”,位置如下图:

     

       设置头文件路径(例如,D:develop_projectlog4cpp-1.1.3log4cppinclude),如下图。这样,整个include文件夹中的头文件就引入到工程里了。

      2、静态库*.lib

      找到刚才生成的lib文件的路径,添加到下图所示“附加库目录”的位置。最后将lib文件名写在下图“附加依赖项”的位置。

      

     

      3、动态库 *.dll

      将动态库文件复制粘贴到工程文件所在的目录下 和 debug目录下。如图:

     

    四 使用说明

      log4cpp.properties

        通过配置文件配置log4cpp,log4cpp.properties的内容如下:

    # log4cpp.properties
    
    log4cpp.rootCategory=DEBUG, rootAppender
    log4cpp.category.sub1=DEBUG, A1, A2
    log4cpp.category.sub1.sub2=DEBUG, A3
    
    log4cpp.appender.rootAppender=ConsoleAppender
    log4cpp.appender.rootAppender.layout=PatternLayout
    log4cpp.appender.rootAppender.layout.ConversionPattern=%d [%p] %m%n 
    
    log4cpp.appender.A1=FileAppender
    log4cpp.appender.A1.fileName=A1.log
    log4cpp.appender.A1.layout=BasicLayout
    
    log4cpp.appender.A2=FileAppender
    log4cpp.appender.A2.threshold=WARN
    log4cpp.appender.A2.fileName=A2.log
    log4cpp.appender.A2.layout=PatternLayout
    log4cpp.appender.A2.layout.ConversionPattern=%d [%p] %m%n 
    
    # 输出到回卷文件,即当文件到达某个大小后回卷
    log4cpp.appender.A3=RollingFileAppender
    log4cpp.appender.A3.fileName=A3.log
    log4cpp.appender.A3.maxFileSize=200
    log4cpp.appender.A3.maxBackupIndex=1
    log4cpp.appender.A3.layout=PatternLayout
    log4cpp.appender.A3.layout.ConversionPattern=%d [%p] %m%n 
    
    # log4cpp::OstreamAppender           // 输出到一个ostream类
    # log4cpp::StringQueueAppender         // 输出到内存队列

      将log4cpp.properties文件引入到工程中。

      编辑 main.cpp 代码如下:

    #include "stdafx.h"
    #include <log4cpp/Category.hh>
    #include <log4cpp/PropertyConfigurator.hh>
    
    int main(int argc, char** argv) {
        std::string initFileName = "log4cpp.properties";
        log4cpp::PropertyConfigurator::configure(initFileName);    // 使用前要加载配置文件
    
        log4cpp::Category& root = log4cpp::Category::getRoot();
        log4cpp::Category& sub1 = log4cpp::Category::getInstance(std::string("sub1"));
        log4cpp::Category& sub2 = log4cpp::Category::getInstance(std::string("sub1.sub2"));
    
        root.warn("Storm is coming");
        sub1.debug("Received storm warning");
        sub1.info("Closing all hatches");
    
        sub2.debug("Hiding solar panels");
        sub2.error("Solar panels are blocked");
        sub2.debug("Applying protective shield");
        sub2.warn("Unfolding protective shield");
        sub2.info("Solar panels are shielded");
    
        sub1.info("All hatches closed");
        root.info("Ready for storm.");
    
        log4cpp::Category::shutdown();
    
        system("pause");
        return 0;
    }

      运行就可以看到日志文件。

     Log4cpp具体如何使用,可以参考以下链接

      http://log4cpp.sourceforge.net/#simpleexample

      https://www.ibm.com/developerworks/cn/linux/l-log4cpp/

           https://www.xuebuyuan.com/3255730.html

      介绍lib与dll文件区别的链接

      https://www.cnblogs.com/TenosDoIt/p/3203137.html

      https://www.cnblogs.com/zkwarrior/p/10948174.html

  • 相关阅读:
    HihoCoder 1638 : 小Hi的天平 (2-sat+并查集)
    阿里云安全肖力:云上数据安全体系建设的六要素
    MaxCompute客户端(odpscmd)在windows命令行下查询中文乱码问题处理实践
    序列化方案选型对比
    亚洲唯一,阿里云SLB位列Gartner全球网络负载均衡市场前五
    阿里云OSS同城冗余存储技术解析
    OSS跨同城3AZ重磅发布,构造全面数据保护体系
    阿里云OSS同城冗余存储正式商业化,提供云上同城容灾能力
    云原生应用 Kubernetes 监控与弹性实践
    GIAC2019 演讲精选 | 面向未来的黑科技——UI2CODE闲鱼基于图片生成跨端代码
  • 原文地址:https://www.cnblogs.com/lhlc-9-9/p/12358278.html
Copyright © 2011-2022 走看看