C++技术之路:boost 日志应用

写程序的时候,日志记录是少不了的,我们可以用boost来实现日志的记录。
我们直接上代码。
1、头文件中的具体代码实现:

#pragma once

#include<stdio.h>

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>
#include <boost/log/expressions.hpp>
#include <boost/log/sinks/text_file_backend.hpp>
#include <boost/log/utility/setup/file.hpp>
#include <boost/log/utility/setup/common_attributes.hpp>
#include <boost/log/sources/severity_logger.hpp>
#include <boost/log/sources/record_ostream.hpp>

#include <fstream>
#include <iostream>
#include <sstream>
using namespace std;

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace sinks = boost::log::sinks;
namespace keywords = boost::log::keywords;

namespace logging = boost::log;
namespace src = boost::log::sources;
namespace sinks = boost::log::sinks;
namespace keywords = boost::log::keywords;

using namespace logging::trivial;

class CGrockPubChatLog
{
public:
	~CGrockPubChatLog() {}
	static CGrockPubChatLog& Single() { static CGrockPubChatLog single; return single; }
private:
	CGrockPubChatLog() {}

public:
	void Init();

	src::severity_logger<severity_level>& GetLg()
	{
		return lg;
	}

private:
	src::severity_logger<severity_level> lg;
};

#define CHAT_FUN_FILE_LINE " ;"<<__FUNCTION__<<"();  File:"<<__FILE__<<" Line:"<<__LINE__
#define CHAT_FUN_LINE      " ;( "<<__LINE__<<" ):"<<__FUNCTION__

#define CHAT_Cc_LOG_MSG(MSG,GRADE)\
	do{\
		stringstream strStream;\
		strStream<<MSG<<endl;\
		BOOST_LOG_SEV(CGrockPubChatLog::Single().GetLg(), GRADE) << strStream.str().c_str();\
		printf("%s", strStream.str().c_str());\
	} while(0)

#define CHATLOG_SYSINFO(LOGINFO)	 do{ CHAT_Cc_LOG_MSG(LOGINFO, info);}while(0)
#define CHATLOG_WARNING(LOGINFO)	 do{ CHAT_Cc_LOG_MSG(LOGINFO, warning);}while(0)
#define CHATLOG_ERROR(LOGINFO)		 do{ CHAT_Cc_LOG_MSG(LOGINFO, error);}while(0)
#define CHATLOG_FAYAL(LOGINFO)		 do{ CHAT_Cc_LOG_MSG(LOGINFO, fatal);}while(0)
#define CHATLOG_DEBUG(LOGINFO)		 do{ CHAT_Cc_LOG_MSG(LOGINFO, debug);}while(0)

2、Cpp中的代码实现比较简单

#include "./log.h"
void CGrockPubChatLog::Init()
{
	logging::add_file_log
	(
		keywords::auto_flush = true,
		keywords::file_name = "Cc%Y-%m-%d_%H-%M-%S.%N.log",                               
		keywords::rotation_size = 10 * 1024 * 1024,                                 
		keywords::time_based_rotation = sinks::file::rotation_at_time_point(0, 0, 0),  
		keywords::format = "[%TimeStamp%] (%Severity%) : %Message%"                           
	);

	logging::core::get()->set_filter(logging::trivial::severity >= logging::trivial::info);

	logging::add_common_attributes();
}

 
发布了11 篇原创文章 · 获赞 0 · 访问量 299

猜你喜欢

转载自blog.csdn.net/slyw77slyw/article/details/105208332