一步步入门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 Files\log4cpp)。
1)库文件:将log4cppLIB生成的库文件log4cppD.lib(Debug模式)、log4cppLIB.lib(Release模式) 复制到 C:\Program Files\log4cpp\lib文件夹;
2)头文件:将该库用到的库文件.\log4cpp\include文件夹复制到C:\Program Files\log4cpp文件夹中;
工程文件如下图所示:
注意:
3.配置环境及属性;
1)环境变量;
为了代码的可在不同的电脑进行编译,避免引用问题,建议使用环境变量对文件引用路径进行配置。
> 打开系统的环境变量中在用户变量中添加:
变量名:LOG4CPP_ROOT
变量值:C:\Program Files\log4cpp
> 在系统环境变量的系统变量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", * , );
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 = ; i < ; i++)
{
string strError;
ostringstream oss;
oss << i << ":Root Error Message!";
strError = oss.str();
root.error(strError);
} log4cpp::Category::shutdown();//关闭Category;
return ; }
参考
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/
完
做自己该做的事情,做自己喜欢做的事情,安静做一枚有思想的技术媛。
一步步入门log4cpp的更多相关文章
- 一步步入门编写PHP扩展
1.写在最前 随着互联网飞速发展,lamp架构的流行,php支持的扩展也越来越多,这样直接促进了php的发展. 但是php也有脚本语言不可避免的问题,性能比例如C等编译型语言相差甚多,所以在考虑性能问 ...
- C++ log4cpp使用(转)
参考文章: 1.常用C++库(1)日志库 https://blog.csdn.net/qilimi1053620912/article/details/87378707 2.一步步入门log4cpp ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
MVC架构已深得人心,微软也不甘落后,推出了Asp.net MVC.小编特意整理博客园乃至整个网络最具价值的MVC技术原创文章,为想要学习ASP.NET MVC技术的学习者提供一个整合学习入口.本文从 ...
- PHP 扩展开发(将自己的一些代码封装成PHP扩展函数)
今天时间不多,先给个地址,能搜到我这篇blog的朋友先看看我最近在看的一些文章.资料吧: 我的环境是 lnmp1.1 的 (LNMP一键安装包),所以要进行PHP扩展开发首先应该对环境配置和shell ...
- 百度前端技术学院(IFE)2016春季学期总结
今天(5月16日)作为第八个提交者提交了任务五十:RIA微型问卷管理平台 这样一个综合性的大任务,宣告我的IFE春季学期课程学习顺利完成.其实任务五十并不复杂,现在再让我来做,可能一周不到就写出来了, ...
- OO第二单元单元总结
总述 OO的第二单元主题是电梯调度,与第一单元注重对数据的输入输出的处理.性能的优化不同,第二单元的重心更多的是在线程安全与线程通信上.这此次单元实验之前,我并未对线程有过了解,更谈不上“使用经验”, ...
- PHP -- 简单表单提交
网上看博文,一步步入门~~ 简单表单,简单提交 @_@!! <?php //php代码部分开始 echo "<html>"; echo "<hea ...
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总【转】
自学MVC看这里——全网最全ASP.NET MVC 教程汇总 http://www.cnblogs.com/powertoolsteam/archive/2015/08/13/4667892.html ...
- Arthas 开源一周年,GitHub Star 16 K ,我们一直在坚持什么?
缘起 最近看到一个很流行的标题,<开源XX年,star XXX,我是如何坚持的>.看到这样的标题,忽然发觉 Arthas 从 2018 年 9 月开源以来,刚好一年了,正好在这个秋高气爽的 ...
随机推荐
- windows与kali双系统安装基本教程
以前写过一篇在虚拟机中安装kali的基本教程的文章,那时候的kali还是1.0时代,现如今已经kali2.0了,在虚拟机中运行kali还是会受到性能的影响,所以还是装到自己电脑上跑起来最爽.当然如果你 ...
- Qt_2D_画图教程
1. ZC: 看点:相同的API,QPainter.QPainterDevice和QPainterEngine这3个类 Qt学习之2D绘图(画刷和画笔) http://blog.csdn.net/lp ...
- golang基础类型
1.变量 Go使用关键字var定义变量,类型信息放在变量名后面,初始化为零,如下: 在函数内部还有一种更简洁的:=定义方式 变量赋值,两个变量可直接交换 注意:函数内部定义的变量没使用的话编译器会报错 ...
- 技术分享:SSH实战项目
1.需求分析 系统概述: 企业人事管理系统. 要求对员工信息进行维护. 后台系统先登录,才能操作员工;添加.修改.删除. 没有登录,只能查看列表,不能操作. 功能分类: 1)[管理员模块] 注册/登录 ...
- 语言小知识-MySQL数据库引擎
MySQL作为全世界广受欢迎的数据库,被用于很多中小型的项目中,但是你对 MySQL 数据库的存储引擎了解多少呢? 我们将逻辑表中的数据存储到数据库中,数据库又将我们表中的数据存储到物理设备中(如磁盘 ...
- Android AlarmManager 的使用
AlarmManager简介及使用场景: AlarmManager的使用机制有的称呼为全局定时器,有的称呼为闹钟.通过对它的使用,它的作用和Timer有点相似. 都有两种相似的用法: (1).在指定时 ...
- Unity 代码优化
1.不用的代码删除掉,因为即使不用的代码也会 IL2Cpp. 2.MonoBehaviour 的方法是空方法,特别是Update方法,删除掉,会有性能消耗. 3.Unity 中 override 的方 ...
- 滑动窗口解决Substring Search Problem
2018-07-18 11:19:19 一.Minimum Window Substring 问题描述: 问题求解: public String minWindow(String s, String ...
- 雷林鹏分享:C# 不安全代码
C# 不安全代码 当一个代码块使用 unsafe 修饰符标记时,C# 允许在函数中使用指针变量.不安全代码或非托管代码是指使用了指针变量的代码块. 指针变量 指针 是值为另一个变量的地址的变量,即,内 ...
- [.NET开发] C#面向服务WebService从入门到精通
C#面向服务WebService从入门到精通>包含以下两个部分: 一.<C#远程调用技术WebService修炼手册[基础篇]> 本次分享课您将学习到以下干货知识点: 1).WebS ...