首先,从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
分享到:
相关推荐
本文介绍了使用log4cplus有六个步骤,并提供了一些例子引导你了解log4cplus的基本使用。 ### 基本使用 ### 使用log4cplus有六个基本步骤: 1. 实例化一个appender对象 2. 实例化一个layout对象 3. 将layout...
Qt中第三方日志库log4cplus的基本配置和使用详解案例,仅供参考,不可盲目相信,因为我的编译环境和您的不相同,所以建议参考文章自己编译,文章可参考:https://blog.csdn.net/didi_ya/article/details/123148479
Log4cplus使用指南 Log4cplus使用说明 ,里面有详细的使用用例可以借鉴,想要用Log4cplus输出日志的可以借鉴下。
log4cplus是C++编写的开源的日志系统,前身是java编写的log4j系统.受Apache Software License 保护。作者是Tad E. Smith。log4cplus具有线程安全、灵活、以及多粒度控制的特点,通过将信息划分 优先级使其可以面向...
log4cplus-1.2.1库使用说明:编译log4cplus-1.2.1库与调用
log4cplus使用说明
Log4cplus使用指南,有利于代码的调试
visual studio 2017(vc15) 编译的log4cplus 1.2.1,32位,下载即用
log4cplus 使用文档说明,很详细,里面有简单demo说明
Log4cplus使用指南 非常详细 由docx转换的 带书签
Log4qt 1.4.2版本 qt专用
封装的log4cplus日志库,软件采用vs2008编写,在实际项目中使用,方便高效。
visual studio 2017(vc15) 编译的log4cplus 2.0.2,32位,下载即用
此demo是基于Log4PlusPlus库开发的日志模块demo,里面有可用的log4cplus.dll,log4cplus.lib库。基于VS2010 C++ 开发,包含VS工程源码,里面有独立封装的接口类,可直接用于项目开发。
log4cplus的帮助文档。最新版本1.1.0
我个人的log4cplus-1.2.2的编译与测试使用,Win7+VS2013环境。里面包含了编译出来的32位/64位的动态/静态库和测试用例。
log4cplus封装
log4cplus是C++编写的开源的日志系统,log为对其的封装类,支持类似Format方式输出日志,方便开发中对日志的编写以及维护
log4cplus,一个强大的日志开源代码!
log4cplus开源库的Ver1.1.1