LOG4CPLUS单例封装及配置项

 

log4cplus.logger.YxLogObject= TRACE,DEBUG_YxLogObject,YxLogObject_INFO, ERR_YxLogObject

log4cplus.appender.DEBUG_YxLogObject=log4cplus::RollingFileAppender
log4cplus.appender.DEBUG_YxLogObject.File=./log/yxclient/debug.log
log4cplus.appender.DEBUG_YxLogObject.Appender=log4cplus::RollingFileAppender
log4cplus.appender.DEBUG_YxLogObject.QueueLimit=999
log4cplus.appender.DEBUG_YxLogObject.MaxFileSize=50MB
log4cplus.appender.DEBUG_YxLogObject.MaxBackupIndex=10
log4cplus.appender.DEBUG_YxLogObject.Encoding=utf-8
log4cplus.appender.DEBUG_YxLogObject.layout=log4cplus::PatternLayout
log4cplus.appender.DEBUG_YxLogObject.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S.%q} [%-5p] %m %n
log4cplus.appender.DEBUG_YxLogObject.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.DEBUG_YxLogObject.filters.1.LogLevelToMatch=DEBUG
log4cplus.appender.DEBUG_YxLogObject.filters.1.AcceptOnMatch=true
log4cplus.appender.DEBUG_YxLogObject.CreateDirs=true 
log4cplus.appender.DEBUG_YxLogObject.filters.2=log4cplus::spi::DenyAllFilter

log4cplus.appender.YxLogObject_INFO=log4cplus::RollingFileAppender
log4cplus.appender.YxLogObject_INFO.File=./log/yxclient/run.log
log4cplus.appender.YxLogObject_INFO.Appender=log4cplus::RollingFileAppender
log4cplus.appender.YxLogObject_INFO.QueueLimit=100000
log4cplus.appender.YxLogObject_INFO.MaxFileSize=50MB
log4cplus.appender.YxLogObject_INFO.MaxBackupIndex=10
log4cplus.appender.YxLogObject_INFO.Encoding=utf-8
log4cplus.appender.YxLogObject_INFO.CreateDirs=true 
log4cplus.appender.YxLogObject_INFO.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.YxLogObject_INFO.filters.1.AcceptOnMatch=true
log4cplus.appender.YxLogObject_INFO.filters.1.LogLevelToMatch=INFO
log4cplus.appender.YxLogObject_INFO.layout=log4cplus::PatternLayout
log4cplus.appender.YxLogObject_INFO.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S.%q} [%-5p] %m %n
log4cplus.appender.YxLogObject_INFO.filters.2=log4cplus::spi::DenyAllFilter


log4cplus.appender.ERR_YxLogObject=log4cplus::RollingFileAppender
log4cplus.appender.ERR_YxLogObject.File=./log/yxclient/error.log
log4cplus.appender.ERR_YxLogObject.Appender=log4cplus::RollingFileAppender
log4cplus.appender.ERR_YxLogObject.QueueLimit=100000
log4cplus.appender.ERR_YxLogObject.MaxFileSize=50MB
log4cplus.appender.ERR_YxLogObject.MaxBackupIndex=10
log4cplus.appender.ERR_YxLogObject.Encoding=utf-8
log4cplus.appender.ERR_YxLogObject.layout=log4cplus::PatternLayout
log4cplus.appender.ERR_YxLogObject.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S.%q} [%-5p] %m %n
log4cplus.appender.ERR_YxLogObject.filters.1=log4cplus::spi::LogLevelMatchFilter
log4cplus.appender.ERR_YxLogObject.filters.1.LogLevelToMatch=ERROR
log4cplus.appender.ERR_YxLogObject.filters.1.AcceptOnMatch=true
log4cplus.appender.ERR_YxLogObject.CreateDirs=true 
log4cplus.appender.ERR_YxLogObject.filters.2=log4cplus::spi::DenyAllFilter

 

#pragma  once
#include <QObject>
#include "YxSingleton.h"
#include <QString>
#include <log4cplus/logger.h>
#include <log4cplus/hierarchy.h>
#include <string>
using namespace std;
using namespace log4cplus;

template <typename... Args>
inline std::string format_str(const char* pformat, Args... args)
{
	// 计算字符串长度
	int len_str = std::snprintf(nullptr, 0, pformat, args...);

	if (0 >= len_str)
		return std::string("");

	len_str++;
	char* pstr_out = nullptr;
	pstr_out = new(std::nothrow) char[len_str];
	// 申请失败
	if (NULL == pstr_out || nullptr == pstr_out)
		return std::string("");

	// 构造字符串
	std::snprintf(pstr_out, len_str, pformat, args...);

	// 保存构造结果
	std::string str(pstr_out);

	// 释放空间
	delete pstr_out;
	pstr_out = nullptr;

	return str;
}

enum LogLevelEnum
{
	_DEBUG_LOG_LEVEL_ =1,
	_RUNINFO_LOG_LEVEL_,
	_ERROR_LOG_LEVEL_ 

};

class YxLog4cppObject 
{
public:
	SINGLETON(YxLog4cppObject)	
public:
	void WriteDebugLog(string _strLog);
	void WriteRunInfoLog(string _strLog);
	void WriteErrorLog(string _strLog);
	void SetLogLevel(const LogLevelEnum& _enLevel);
private:
	Logger m_logger;
	log4cplus::Hierarchy m_hierarchy;
};


#include "YxLog4cppObject.hpp"
#include <log4cplus/configurator.h>
#include <log4cplus/helpers/stringhelper.h>
#include <log4cplus/loggingmacros.h>
#include <QDebug>

using namespace std;
using namespace log4cplus::helpers;

#define LOG4CPLUS_CONF_FILE "./YxStreamClient.properties"


YxLog4cppObject::YxLog4cppObject(){
	
	PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT(LOG4CPLUS_CONF_FILE), m_hierarchy);
	m_logger = m_hierarchy.getInstance("YxLogObject");
}
YxLog4cppObject::~YxLog4cppObject() {}

void YxLog4cppObject::WriteDebugLog( string  _strLog)
{
	qDebug() << _strLog.c_str();
	LOG4CPLUS_DEBUG(m_logger, _strLog.c_str());
}

void YxLog4cppObject::WriteRunInfoLog( string  _strLog)
{
	qDebug() << _strLog.c_str();
 	LOG4CPLUS_INFO(m_logger, _strLog.c_str());
}

void YxLog4cppObject::WriteErrorLog( string  _strLog)
{
	qDebug() << _strLog.c_str();
	LOG4CPLUS_ERROR(m_logger, _strLog.c_str());
}


void YxLog4cppObject::SetLogLevel(const LogLevelEnum& _enLevel)
{
	switch (_enLevel)
	{ 
	case _DEBUG_LOG_LEVEL_:
		m_logger.setLogLevel(DEBUG_LOG_LEVEL);
		break;
	case _RUNINFO_LOG_LEVEL_:
		m_logger.setLogLevel(INFO_LOG_LEVEL);
		break;
	case _ERROR_LOG_LEVEL_:
		m_logger.setLogLevel(ERROR_LOG_LEVEL);
		break;
	default:
		m_logger.setLogLevel(DEBUG_LOG_LEVEL);
		break;
	}
}

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值