log4cplus的一个常用封装实例

、、VLog.h
#pragma once
#ifndef VLOG_H
#define	VLOG_H

#include <log4cplus/logger.h>
#include <log4cplus/layout.h>
#include <log4cplus/loglevel.h>
#include <log4cplus/fileappender.h>
#include <log4cplus/consoleappender.h>

#include <log4cplus/helpers/loglog.h>

using namespace log4cplus;
using namespace helpers;

/**
 * 使用log4cplus
 * @param logfile 记录的文件路径,如“main.log”
 * @param format 格式化前缀,默认%d [%l] %-5p : %m %n
 * @param bebug 是否打印bebug信息,默认true
 * @param lv 设置日记级别
 * @return 
 */
void InitLog4cplus(
        const wchar_t* logfile,
        const bool console = true,
        const bool bebug = true,
        LogLevel lv = DEBUG_LOG_LEVEL,
        const wchar_t* format = L"%d : %m%n" /*%d %-5p [%c < %l] : %m %n*/
        );

/**
 * 获得根日志
 * @return 
 */
Logger GetRootLogger(void);

/**
 * 获得子日志
 * @param child 子日志名,如,sub;sub.sub1
 * @return 
 */
Logger GetSubLogger(const wchar_t* sub);

/**
 * 关闭日志系统
 */
void ShutdownLogger(void);

#endif	/* VLOG_H */


//VLog.cpp

/************************************************************************/
/* 使用规则:                                                             */
/* 需要log4cplus动态/静态链接库及头文件                                      */
/* log4cplus.lib + log4cplus.dll 为动态链接库。log4cplusS.lib为静态链接库    */
/************************************************************************/
#include "VLog.h"

void InitLog4cplus(const wchar_t* logfile, const bool console, const bool bebug,
        LogLevel lv, const wchar_t* format)
/*
NOT_SET_LOG_LEVEL               (   -1) :接受缺省的LogLevel,如果有父logger则继承它的
LogLevelALL_LOG_LEVEL           (    0) :开放所有log信息输出
TRACE_LOG_LEVEL                 (    0) :开放trace信息输出(即ALL_LOG_LEVEL)
DEBUG_LOG_LEVEL                 (10000) :开放debug信息输出
INFO_LOG_LEVEL                  (20000) :开放info信息输出
WARN_LOG_LEVEL                  (30000) :开放warning信息输出
ERROR_LOG_LEVEL                 (40000) :开放error信息输出
FATAL_LOG_LEVEL                 (50000) :开放fatal信息输出
OFF_LOG_LEVEL                   (60000) :关闭所有log信息输出
 */ {
    // 0.日志系统配置:设置显示debug信息
    LogLog::getLogLog()->setInternalDebugging(bebug);


    // 创建屏幕输出Appender,不采用stderror流,不采用立刻写入模式
    SharedAppenderPtr pappender1(new RollingFileAppender(logfile, 1024 * 1024 * 200, 50, false));
    // 生成的日志文件名称,文件最大值(最小1 * 200 M),扩展50文件个数,不采用立刻写入模式

    // 2.实例化一个layout对象
    // 2.1创建layout布局格式
    std::auto_ptr<Layout> playout1(new PatternLayout(format));

    // 3.将layout对象绑定(attach)到appender对象
    // pappender.setLayout(std::auto_ptr<Layout> layout);
    pappender1->setLayout(playout1);

    // 4.Logger :记录器,保存并跟踪对象日志信息变更的实体,当你需要对一个对象进行记录时,就需要生成一个logger。
    Logger rootLogger = Logger::getRoot();

    // 5.将appender对象绑定(attach)到logger对象,如省略此步骤,标准输出(屏幕)appender对象会绑定到logger
    rootLogger.addAppender(pappender1);

    if (console) {
        // 1.Appenders :挂接器,与布局器紧密配合,将特定格式的消息输出到所挂接的设备终端 (如屏幕,文件等等)。
        SharedAppenderPtr pappender2(new ConsoleAppender(false, false));
        std::auto_ptr<Layout> playout2(new PatternLayout(format));
        pappender2->setLayout(playout2);
        rootLogger.addAppender(pappender2);
    }

    // 6.设置logger的优先级,如省略此步骤,各种有限级的消息都将被记录
    rootLogger.setLogLevel(lv);
}

Logger GetRootLogger(void) {
    return Logger::getRoot();
}

Logger GetSubLogger(const wchar_t* sub) {
    return Logger::getInstance(sub);
}

void ShutdownLogger(void) {
    Logger::getRoot().shutdown();
}

<p>#include "VLog.h"</p><p>int _tmain(int argc, _TCHAR* argv[])
{
&nbsp;// 加入log4cplus
&nbsp;// 初始化log4cplus
&nbsp;InitLog4cplus(L"main.log");</p><p>&nbsp;// 日志对象:测试一
&nbsp;log4cplus::Logger test1 = GetSubLogger(L"test1");
&nbsp;// 日志对象:测试一 第一次测试
&nbsp;log4cplus::Logger test1_01 = GetSubLogger(L"test1.01");</p><p>&nbsp;// 类型日志记录
&nbsp;LOG4CPLUS_DEBUG(test1_01, "you can log like this :" << "hello " << 100 << '!');</p><p>&nbsp;// 关闭日志
&nbsp;ShutdownLogger();
}
</p>


FROM: http://blog.csdn.net/eclipser1987/article/details/6904301

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值