• 一步步入门log4cpp


    前言

    项目实现过程中,需要检查、查找或者调试程序bug等,此时程序日志则较为清晰地展现代码的运行过程。目前接触到的方法有打印消息到控制台,将重要信息输出到某个文件比如txt文件,或者直接使用日志库。

    为了方便移植,采用日志库的方式,目前主流的日志库有log4j、glog、log4cpp等等,本文采用log4cpp日志库。

    实现步骤

    1.下载源代码包;

    2.编译链接;

    3.配置环境变量;

    4.简单实例;

    实现环境

    系统环境:win7 64bit

    开发环境:vs2013

    软件版本:log4cpp-1.1.2.tar.gz

    实现过程

    1.下载源码包;

    下载地址(本文下载链接):

    https://sourceforge.net/projects/log4cpp/

    下载完成之后解压即可;

    log4cpp主页:

    http://log4cpp.sourceforge.net/

    源码包文件如下图所示:

     2.编译链接;

    将文件夹中的msvc10文件夹复制到当前目录下,并将文件夹重命名为msvc11,同时将文件夹内的解决方案改为msvc11.sln;

    该解决方案包含多个工程项目,有log4cpp静态库、log4cppLIB动态库以及一项相应的demo工程。本文使用的是log4cppLIB静态库,分别在release和debug模式下进行编译链接生成相应的库文件。

    为方便,将需要的头文件和库文件复制到某一个新建的文件夹中(C:Program Fileslog4cpp)。

    1)库文件:将log4cppLIB生成的库文件log4cppD.lib(Debug模式)、log4cppLIB.lib(Release模式) 复制到 C:Program Fileslog4cpplib文件夹;

    2)头文件:将该库用到的库文件.log4cppinclude文件夹复制到C:Program Fileslog4cpp文件夹中;

    工程文件如下图所示:

     注意:

    3.配置环境及属性;

    1)环境变量;

    为了代码的可在不同的电脑进行编译,避免引用问题,建议使用环境变量对文件引用路径进行配置。

    > 打开系统的环境变量中在用户变量中添加:

    变量名:LOG4CPP_ROOT

    变量值:C:Program Fileslog4cpp

    > 在系统环境变量的系统变量path值中添加

    变量值:;%LOG4CPP_ROOT%lib

    注意:重启电脑配置的环境变量生效。

    2)VS项目属性;

    分别配置VS项目Debug和Release模式的属性;

    (1)打开项目属性页面,VC++目录选项常规下的包含目录,新建添加为$(LOG4CPP_ROOT)include;

    (2)打开项目属性页面,VC++目录选项常规下的库目录,新建添加为$(LOG4CPP_ROOT)lib;

    (3)打开项目属性页面,链接器输入选项下的附加依赖项,添加log4cppD.lib(Debug模式);或者log4cppLIB.lib(Release模式);

    注意:

    4.简单实例;

    //FileAppenderExam:
    #include <iostream>
    #include <log4cpp/Category.hh>
    #include <log4cpp/Appender.hh>
    #include <log4cpp/FileAppender.hh>
    #include <log4cpp/Priority.hh>
    #include <log4cpp/PatternLayout.hh>
    #include <log4cpp/RollingFileAppender.hh>
    using namespace std;
    
    int main(int argc, char* argv[])
    {
        log4cpp::PatternLayout* pLayout1 = new log4cpp::PatternLayout();//创建一个Layout;
        pLayout1->setConversionPattern("%d: %p %c %x: %m%n");//指定布局格式;
    
        log4cpp::PatternLayout* pLayout2 = new log4cpp::PatternLayout();
        pLayout2->setConversionPattern("%d: %p %c %x: %m%n");
    
        log4cpp::Appender* fileAppender = new log4cpp::FileAppender("fileAppender", "wxb.log");//创建一个Appender;
        fileAppender->setLayout(pLayout1);//将指定的Layout添加到Appender;
    
        log4cpp::RollingFileAppender* rollfileAppender = new log4cpp::RollingFileAppender(
            "rollfileAppender", "rollwxb.log", 5 * 1024, 1);
        rollfileAppender->setLayout(pLayout2);
    
        log4cpp::Category& root = log4cpp::Category::getRoot().getInstance("RootName");//从系统中得到Category的根;
        root.addAppender(fileAppender);//将Appender添加到Category;
        root.addAppender(rollfileAppender);
        root.setPriority(log4cpp::Priority::DEBUG);//设置Category的优先级;
    
        //开始记录日志;
        for (int i = 0; i < 100; i++)
        {
            string strError;
            ostringstream oss;
            oss << i << ":Root Error Message!";
            strError = oss.str();
            root.error(strError);
        }
    
        log4cpp::Category::shutdown();//关闭Category;
        return 0;
    
    }

    参考

    1.log4cpp的使用:http://blog.csdn.net/xinhuo11/article/details/11061137

    2.基于LGPL开源项目 Log4cpp安装与使用:

    http://tech.it168.com/a2011/0408/1175/000001175907_all.shtml

    3.http://www.voidcn.com/blog/sf2gis2/article/p-5704173.html

    4.https://sourceforge.net/projects/log4cpp/files/

    5.http://www.cnblogs.com/sanghg/p/4203153.html

    6.https://sourceforge.net/projects/log4cpp/

    7.log4cpp主页:http://log4cpp.sourceforge.net/

    做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。

  • 相关阅读:
    为什么重写equals还要重写hashcode?
    谈谈关于Synchronized和lock
    springBoot为啥没有没有web.xml了
    springBoot整合mybatis开发
    springBoot的介绍与搭建
    Java i++原理及i=i++的问题说明
    Django学习笔记〇三——APP以及的文件结构
    Django学习笔记〇二——第一个Django项目
    Django学习笔记〇一——从web的概念引入
    MySQL学习笔记——〇六SQLAlchemy框架
  • 原文地址:https://www.cnblogs.com/happyamyhope/p/6872485.html
Copyright © 2020-2023  润新知