Log4cplus使用

1.包含log4cplus头文件和lib
在这里插入图片描述

2.封装LogHelper
LogHelper.h

#pragma once
#include "log4cplus/logger.h"

class LogHelper
{
public:
	LogHelper();
	~LogHelper();

public:
	int Load(const std::string& log_config_path, const std::string& logger_name);

	const log4cplus::Logger& GetLogger() const
	{
		return logger_;
	}

private:
	log4cplus::Logger logger_;
	static const unsigned watch_interval_ = 1*60*1000;
};

LogHelper.cpp

// LogHelper.cpp : 定义 DLL 应用程序的导出函数。
//
#include "LogHelper.h"
#include "log4cplus/configurator.h"
#include "log4cplus/loggingmacros.h"

LogHelper::LogHelper()
{
	log4cplus::initialize();
}

LogHelper::~LogHelper()
{
	log4cplus::Logger::shutdown();
}

int LogHelper::Load(const std::string& log_config_path, const std::string& logger_name)
{
	try
	{
		static log4cplus::ConfigureAndWatchThread config_thread(LOG4CPLUS_STRING_TO_TSTRING(log_config_path), watch_interval_);
		if (!log4cplus::Logger::exists(LOG4CPLUS_STRING_TO_TSTRING(logger_name)))
		{
			return -1;
		}
		logger_ = log4cplus::Logger::getInstance(LOG4CPLUS_STRING_TO_TSTRING(logger_name));
	}
	catch(...)
	{
		return -1;
	}

	return 0;
}


LogHelper* g_log_helper = new LogHelper();

定义LogHelper使用方法LogUtil.h

#pragma once

#include "LogHelper.h"
#include "log4cplus/loggingmacros.h"

extern LogHelper* g_log_helper;

#ifndef LOG_TRACE
#define LOG_TRACE(info_ostream) LOG4CPLUS_TRACE(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_TRACE_F
#define LOG_TRACE_F(...) LOG4CPLUS_TRACE_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

#ifndef LOG_DEBUG
#define LOG_DEBUG(info_ostream) LOG4CPLUS_DEBUG(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_DEBUG_F
#define LOG_DEBUG_F(...) LOG4CPLUS_DEBUG_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

#ifndef LOG_INFO
#define LOG_INFO(info_ostream) LOG4CPLUS_INFO(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_INFO_F
#define LOG_INFO_F(...) LOG4CPLUS_INFO_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

#ifndef LOG_WARN
#define LOG_WARN(info_ostream) LOG4CPLUS_WARN(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_WARN_F
#define LOG_WARN_F(...) LOG4CPLUS_WARN_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

#ifndef LOG_ERROR
#define LOG_ERROR(info_ostream) LOG4CPLUS_ERROR(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_ERROR_F
#define LOG_ERROR_F(...) LOG4CPLUS_ERROR_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

#ifndef LOG_FATAL
#define LOG_FATAL(info_ostream) LOG4CPLUS_FATAL(g_log_helper->GetLogger(), info_ostream)
#endif

#ifndef LOG_FATAL_F
#define LOG_FATAL_F(...) LOG4CPLUS_FATAL_FMT(g_log_helper->GetLogger(), __VA_ARGS__)
#endif

使用

	if (g_log_helper == NULL)
	{
		g_log_helper = new LogHelper();
	}
	int nret = g_log_helper->Load("./config/log.conf", "demo_app");
	LOG_INFO("CloudAppServer Is Already Runing..." << 123 << "abc");
	LOG_INFO_F("appid[%d]",0x0101);

配置文件:

log4cplus.logger.demo_app=TRACE, demo_appender
log4cplus.additivity.demo_app=FALSE
log4cplus.appender.demo_appender=log4cplus::RollingFileAppender
log4cplus.appender.demo_appender.File=./demo_app.log
log4cplus.appender.demo_appender.MaxFileSize=20MB
log4cplus.appender.demo_appender.MaxBackupIndex=9
log4cplus.appender.demo_appender.layout=log4cplus::PatternLayout
log4cplus.appender.demo_appender.layout.ConversionPattern=[%-5p %c %t %D{%Y-%m-%d %H:%M:%S %Q} %b:%L] %m%n

如果使用最新版本编译不通过,建议使用1.2.1版本

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值