一步步入门log4cpp

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

大家好,又见面了,我是你们的朋友全栈君。

前言

项目实现过程中,需要检查、查找或者调试程序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/

源码包文件如下图所示:

<span role="heading" aria-level="2">一步步入门log4cpp

 

 2.编译链接;

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

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

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

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

2)头文件:将该库用到的库文件.\log4cpp\include文件夹复制到C:\Program Files\log4cpp文件夹中;

工程文件如下图所示:

<span role="heading" aria-level="2">一步步入门log4cpp

 注意:

 

3.配置环境及属性;

1)环境变量;

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

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

变量名:LOG4CPP_ROOT

变量值:C:\Program Files\log4cpp

<span role="heading" aria-level="2">一步步入门log4cpp

 

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

变量值:;%LOG4CPP_ROOT%\lib

<span role="heading" aria-level="2">一步步入门log4cpp

 

 

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

2)VS项目属性;

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

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

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

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

<span role="heading" aria-level="2">一步步入门log4cpp

 

注意:

 

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/

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

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/154379.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 网络协议之视频直播核心技术讲解

    网络协议之视频直播核心技术讲解网络视频直播存在已有很长一段时间,随着移动上下行带宽提升及资费的下调,视频直播被赋予了更多娱乐和社交的属性,人们享受随时随地进行直播和观看,直播的打开时间和延迟变成了影响产品功能发展重要指标。那么,问题来了:如何实现低延迟、秒开的直播?先来看看视频直播的5个关键的流程:录制->编码->网络传输->解码->播放每个环节对于直播的延迟都会产生不同程度的影响。这里重点分析移动设备的情况。受限于技术的成熟度、硬件环境等,我们针对移动场景简单总结出直播延迟优化的4个点…

  • SQL Server 2008 R2 详细安装图文教程

    SQL Server 2008 R2 详细安装图文教程SQLServer2008R2安装教程1、打开安装包,点击setup.exe2、选择左侧列表中的“安装”。3、点击“全新安装或向现有安装添加功能”。4、检测完成点击确定。5、选择版本和密钥,然后下一步。(因为有版权要求,在这不能给安装密钥,需要安装密钥的请私信博主)6、选择“我接受许可条款”。点击下一步7、点击“安装”。8、…

  • 《JavaScript 模式》读书笔记(2)— 基本技巧3

    这是基本技巧的最后一篇内容,这篇内容示例代码并不多。主要是概念比较多一点。编码约定确定并一致遵循约定比这个具体约定是什么更为重要。一、缩进无论是使用tab还是空格,只要是一致遵循的,是什么并不

  • Internet宽带接入方式详解

    Internet宽带接入方式详解

  • 美军打掉德国炮兵阵地的电影_英雄连2怎么找炮兵阵地

    美军打掉德国炮兵阵地的电影_英雄连2怎么找炮兵阵地司令部的将军们打算在 N×M 的网格地图上部署他们的炮兵部队。一个 N×M 的地图由 N 行 M 列组成,地图的每一格可能是山地(用 H 表示),也可能是平原(用 P 表示),如下图。在每一格平原地形上最多可以布置一支炮兵部队(山地上不能够部署炮兵部队);一支炮兵部队在地图上的攻击范围如图中黑色区域所示:如果在地图中的灰色所标识的平原上部署一支炮兵部队,则图中的黑色的网格表示它能够攻击到的区域:沿横向左右各两格,沿纵向上下各两格。图上其它白色网格均攻击不到。从图上可见炮兵的攻击范围不受地形的影响

  • mysql清空数据库所有表的命令_mysql清空表数据命令是什么?_数据库,mysql,清空表数据…[通俗易懂]

    mysql清空数据库所有表的命令_mysql清空表数据命令是什么?_数据库,mysql,清空表数据…[通俗易懂]mysql服务无法启动怎么解决_数据库mysql服务无法启动的解决方法是:1、配置环境变量;2、在mysql安装目录下,新建my.ini文件,设置默认字符集、端口、存储引擎等;3、执行【mysqld–initialize】命令初始化;4、启动mysql服务。mysql清空表数据命令有以下两种语句:语句1:deletefrom表名;语句2:truncatetable表名;比较:mys…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号