首先,从http://sourceforge.net/projects/log4cplus/files/log4cplus-stable/下载最新的版本,解压缩,用vs2008打开msvc8文件夹下的log4cplus.sln,并按照提示转换。在Solution Configurations下拉列表框中,会有Debug、Debug_Unicode、Release、Release_Unicode四种形式,分别选择进行编译,选中Solution ‘log4cplus’,点击Biuld Solution,会在每种形式下成功编译17个工程文件。在msvc8/Win32下的文件夹中生成相应的库文件和exe执行文件。

将相应的库和头文件包含到相应的目录中即可应用,若不想改变头文件中包含的头文件设置,还需自己创建一个项目属性表。

基本元素:

Logger:解决了在哪里使用日志的问题,日志模块,程序中唯一一个必须要使用的模块;

Appenders:解决了将日志信息最终输出到哪里去的问题,如控制台、文件、网络等;

Layout:解决了如何输出的问题,格式化输出信息;

Filter:解决了最终哪些类型的信息需要输出,比如DEBUG、WARR、TRACE、INFO、ERROR等;

一般步骤:

(1)、生成Appender对象;

(2)、生成Layout对象,并绑定到Appender(可选);

(3)、生成Logger对象;

(4)、设置Logger优先级(可选);

(5)、将需要关联Logger的Appender添加到Logger上;

(6)、使用Logger输出信息,所有大于设定的优先级的信息,并在所有挂接在该Logger对象上的Appender上以相应的Layout设定的格式显示出来;

LogLevels:TRACE、DEBUG、INFO、WARN、ERROR、FATAL;

Layout:BasicLayout、TTCCLayout、PatternLayout;

Appenders:ConsoleAppender、FileAppender、RollingFileAppender、DailyRollingFileAppender、SyslogAppender、NTEventLogAppender、SocketAppender、Win32DebugAppender;

Filter:DenyAllFilter、LogLevelMatchFilter、LogLevelRangeFilter、StringMatchFilter;

// TestLog4cplus.cpp : Defines the entry point for the console application.

//

#include "stdafx.h"

#include <string>

#include <log4cplus/logger.h>//定义Log对象

#include <log4cplus/consoleappender.h>//输出到控制台

#include <log4cplus/fileappender.h>//输出到文件

#include <log4cplus/layout.h>//输出格式

using namespace std;

using namespace log4cplus;

using namespace log4cplus::helpers;

int _tmain(int argc, _TCHAR* argv[])

{

string strLogName1 = "E:\\Log4cplus\\TestLog1.log";

string strLogName2 = "E:\\Log4cplus\\TestLog2.log";

//定义控制台Appender

SharedAppenderPtr pConsoleAppender(new ConsoleAppender());

//定义文件Appender

SharedAppenderPtr pFileAppender(new FileAppender(LOG4CPLUS_TEXT(strLogName1), LOG4CPLUS_FSTREAM_NAMESPACE::ios::app, true));

SharedAppenderPtr pRollingFileAppender(new RollingFileAppender(LOG4CPLUS_TEXT(strLogName2), 1024*1024, 1, true));

//定义Layout,并绑定到Appender上

//pConsoleAppender->setLayout(std::auto_ptr<Layout>(new SimpleLayout()));

//pFileAppender->setLayout(std::auto_ptr<Layout>(new SimpleLayout()));

//pRollingFileAppender->setLayout(std::auto_ptr<Layout>(new SimpleLayout()));

//pConsoleAppender->setLayout(std::auto_ptr<Layout>(new TTCCLayout()));

//pFileAppender->setLayout(std::auto_ptr<Layout>(new TTCCLayout()));

//pRollingFileAppender->setLayout(std::auto_ptr<Layout>(new TTCCLayout()));

//log4cplus::tstring pattern = LOG4CPLUS_TEXT("%d{%m/%d/%y %H:%M:%S,%Q} [%t] %-5p %c{2} %%%x%% - %m [%l]%n");

//log4cplus::tstring pattern = LOG4CPLUS_TEXT("%D{%c} %p %% %m %% [%l]%n");//%D显示本地时间、%d显示标准时间

log4cplus::tstring pattern = LOG4CPLUS_TEXT("%D{%Y/%m/%d %X} %p %% %m %% [%l]%n");

pConsoleAppender->setLayout(std::auto_ptr<Layout>(new PatternLayout(pattern)));

pFileAppender->setLayout(std::auto_ptr<Layout>(new PatternLayout(pattern)));

pRollingFileAppender->setLayout(std::auto_ptr<Layout>(new PatternLayout(pattern)));

//定义Logger

Logger pTestLogger = Logger::getInstance(LOG4CPLUS_TEXT("LoggerName"));

//设置Logger优先级

//pTestLogger.setLogLevel(ALL_LOG_LEVEL);

//pTestLogger.setLogLevel(DEBUG_LOG_LEVEL);

pTestLogger.setLogLevel(INFO_LOG_LEVEL);

//pTestLogger.setLogLevel(WARN_LOG_LEVEL);

//pTestLogger.setLogLevel(ERROR_LOG_LEVEL);

//将需要关联Logger的Appender添加到Logger上

pTestLogger.addAppender(pConsoleAppender);

pTestLogger.addAppender(pFileAppender);

pTestLogger.addAppender(pRollingFileAppender);

//输出日志信息

LOG4CPLUS_INFO(pTestLogger, "this is a info log...");

LOG4CPLUS_DEBUG(pTestLogger, "this is a debug log...");

LOG4CPLUS_ERROR(pTestLogger, "this is a error log...");

LOG4CPLUS_WARN(pTestLogger, "this is a warn log...");

return 0;

}

参考文献:

1、  http://log4cplus.sourceforge.net/

2、  http://pyhcx.blog.51cto.com/713166/143549

3、  http://www.cppblog.com/tx7do/articles/11715.html

4、  http://www.cppblog.com/API/archive/2011/04/02/143275.html

5、  http://msdn.microsoft.com/zh-cn/library/5k4a0033(v=VS.90).aspx

6、  http://www.cnblogs.com/kenter/archive/2011/09/05/2167201.html

Log4cplus1.04的使用相关推荐

  1. docker 配置使用宿主机的GPU(ubuntu16.04+cuda10.0+cudnn7)

    1. 安装 Docker 卸载旧版本 Docker sudo apt-get remove docker docker-engine docker.io containerd runc 安装新版本 s ...

  2. Ubuntu 16.04 安装后修改屏幕分辨率(xrandr: Failed to get size of gamma for output default)

    ubuntu 16.04 安装后分辨率只有一个选项 1024x768,使用 xrandr 命令出现错误: xrandr: Failed to get size of gamma for output ...

  3. Ubuntu 16.04 安装 Docker - Dependency failed for Docker Application Container

    Docker 安装 由于 apt 官方库里的 Docker 版本可能比较旧,所以先卸载可能存在的旧版本: sudo apt-get remove docker docker-engine docker ...

  4. 【Docker】Ubuntu18.04国内源安装Docker-准备工作(一)

    前言: 安装docker由于很多教程都使用国外源和阿里源,安装失败,这里总结一种国内源的安装方法,亲测有效! 过程: 步骤1:在服务器上创建虚拟机 远程连接服务器,win+R--输入mstsc---- ...

  5. 在Ubuntu18.04上安装opencv 3.4.1

    对于安装opencv有的人一次就成功,而有人安装了N多次才成功.我就是那个安装了N多次的人,每次遇到了很多安装错误,只能通过到网上搜教程资料,解决方法:通过一次次的试错,最终完成了安装.再此提醒第一次 ...

  6. Go 中 time.Parse 报错:year/month/day hour/minute/second out of range 时间格式化为什么是 2006-01-02 15:04:05?

    1. 问题现象 在使用 Go 语言的 time.Parse 解析时间时遇到以下错误: func main() {timeParse, err := time.Parse("2006-11-0 ...

  7. Go 学习笔记(25)— 并发(04)[有缓冲/无缓冲通道、WaitGroup 协程同步、select 多路监听通道、close 关闭通道、channel 传参或作为结构体成员]

    1. 无缓冲的通道 无缓冲的通道(unbuffered channel)是指在接收前没有能力保存任何值的通道. 这种类型的通道要求发送 goroutine 和接收 goroutine 同时准备好,才能 ...

  8. ubuntu14.04安装hadoop2.6.0(伪分布模式)

    版本:虚拟机下安装的ubuntu14.04(64位),hadoop-2.6.0 下面是hadoop2.6.0的官方英文教程: http://hadoop.apache.org/docs/r2.6.0/ ...

  9. Ubuntu 12.04安装Sun JDK 6

    Ubuntu 12.04安装Sun JDK 6 下载 sun jdk 6 bin. 设置权限 chmod +x jdk-6u25-linux-i586.bin 解压文件 ./jdk-6u25-linu ...

最新文章

  1. 屏蔽Drupal中的“Notice: Undefined index”警告
  2. 计算机编码技术ppt,计算机编码技术.ppt
  3. lvs fullnat+ECMP【1】内核编译
  4. JavaScript采用append添加的元素错误
  5. oracle 强制恢复,oracle数据库恢复
  6. 1007 素数对猜想 (20 分)(c语言)
  7. 一步一步实现自己的模拟控件(5)——隐藏类
  8. IOS开发基础之绘图的样式
  9. Dapper介绍--Micro-ORM
  10. css empty_何时使用:empty和:blank CSS伪选择器
  11. 学习 Linux/C/C++ 必备资料
  12. dhcpd.conf配置的有关说明
  13. 解码器常见故障及解决方法
  14. 智能门锁服务器,【胖猴小玩闹】智能门锁与网关:海康萤石智能门锁的网关分析(三)...
  15. Winfrom 极简版贪吃蛇源码
  16. 【Unity3D脚本】Transform类
  17. linux查看进程所在运行目录
  18. Android平台 Target API level 升级到 31,在Android 12上启动黑屏卡死
  19. bvh动作 舞蹈_kinect动作捕捉初探(下)——bvh文件的处理和应用
  20. 伯努利分布(Bernoulli distribution)

热门文章

  1. PyCharm导入numpy包遇到的问题
  2. GitHub分享新华字典数据集
  3. ROS系统中实现点云聚类(realsense数据源)
  4. 深度学习--TensorFlow (1)单层感知器1 -- 实现单数据训练
  5. 机器学习(4)特征预处理
  6. 【Pandas库】(5) 索引操作--增、删
  7. CentOS6.8 Redis5 开机自动启动命令设置
  8. Quixel megascans模型材质贴图合集包
  9. leetcode-102 二叉树的层次遍历
  10. linux 文件查找命令集:find,locate,wheres,which,type