当前位置: 首页 > 工具软件 > log4cplus > 使用案例 >

Log4cplus1.04的使用

邢雨华
2023-12-01

 

首先,从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

 类似资料: