log4cPLus的搭建使用

一、什么是log4cplus

必看:一个著名的日志系统是怎么设计出来的

log4cplus 是 C++编写的开源的日志系统,前身是 java 编写的 log4j 系统,受 Apache Software License 保护,作者是 Tad E. Smith。

二、下载编译

下载地址:点击下载
log4cPLus的搭建使用_第1张图片
log4cPLus的搭建使用_第2张图片
检查工程配置,此配置需要和使用库的代码保持一致,编译生成log4cplusSD.lib
log4cPLus的搭建使用_第3张图片
log4cPLus的搭建使用_第4张图片

三、DEMO 使用

3.1 新建项目

VS2019 新建空项目
log4cPLus的搭建使用_第5张图片
log4cPLus的搭建使用_第6张图片
在这里插入图片描述

3.2 环境搭建

工程目录下新增lib,include文件
log4cPLus的搭建使用_第7张图片
log4cPLus的搭建使用_第8张图片
在这里插入图片描述

3.3 日志配置

log4cplus.rootLogger=ALL,STDOUT, ALL_MSGS, DEBUG_MSGS, ERROR_MSGS

log4cplus.appender.STDOUT=log4cplus::ConsoleAppender
log4cplus.appender.STDOUT.Encoding=utf-8
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout
log4cplus.appender.STDOUT.layout.ConversionPattern=%D{%m/%d/%y %H:%M:%S} [%-5p] %m %n

log4cplus.appender.ALL_MSGS.filters.1 = log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.ALL_MSGS.filters.1.LogLevelMin = INFO
log4cplus.appender.ALL_MSGS.filters.1.LogLevelMax = ERROR

log4cplus.appender.DEBUG_MSGS.filters.1 = log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelMin = DEBUG
log4cplus.appender.DEBUG_MSGS.filters.1.LogLevelMax = ERROR

log4cplus.appender.ERROR_MSGS.filters.1 = log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.ERROR_MSGS.filters.1.LogLevelMin = ERROR
log4cplus.appender.ERROR_MSGS.filters.1.LogLevelMax = ERROR

log4cplus.appender.ALL_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.ALL_MSGS.FilenamePattern=logInfo\%d{yyyy-MM-dd}\All_Msgs.log
log4cplus.appender.ALL_MSGS.Append = true
log4cplus.appender.ALL_MSGS.MaxHistory=10
log4cplus.appender.ALL_MSGS.ImmediateFlush = true
log4cplus.appender.ALL_MSGS.RollOnClose = false

#自动生成目录
log4cplus.appender.ALL_MSGS.CreateDirs=true
log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout
log4cplus.appender.ALL_MSGS.layout.ConversionPattern=%D{%m/%d/%y %H:%M:%S} [%-5p] %m [%l] %n
log4cplus.appender.ALL_MSGS.MaxFileSize=10MB


log4cplus.appender.DEBUG_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.DEBUG_MSGS.FilenamePattern=logInfo\%d{yyyy-MM-dd}\Debug_Msgs.log
log4cplus.appender.DEBUG_MSGS.Append = true
log4cplus.appender.DEBUG_MSGS.MaxHistory=10
log4cplus.appender.DEBUG_MSGS.ImmediateFlush = true
log4cplus.appender.DEBUG_MSGS.RollOnClose = false

#自动生成目录
log4cplus.appender.DEBUG_MSGS.CreateDirs=true
log4cplus.appender.DEBUG_MSGS.layout=log4cplus::PatternLayout
log4cplus.appender.DEBUG_MSGS.layout.ConversionPattern=%D{%m/%d/%y %H:%M:%S} [%-5p] %m [%l] %n
log4cplus.appender.DEBUG_MSGS.MaxFileSize=10MB


log4cplus.appender.ERROR_MSGS=log4cplus::TimeBasedRollingFileAppender
log4cplus.appender.ERROR_MSGS.FilenamePattern=logInfo\%d{yyyy-MM-dd}\Error_Msgs.log
log4cplus.appender.ERROR_MSGS.Append = true
log4cplus.appender.ERROR_MSGS.MaxHistory=10
log4cplus.appender.ERROR_MSGS.ImmediateFlush = true
log4cplus.appender.ERROR_MSGS.RollOnClose = false

#自动生成目录
log4cplus.appender.ERROR_MSGS.CreateDirs=true
log4cplus.appender.ERROR_MSGS.layout=log4cplus::PatternLayout
log4cplus.appender.ERROR_MSGS.layout.ConversionPattern=%D{%m/%d/%y %H:%M:%S} [%-5p] %m [%l] %n
log4cplus.appender.ERROR_MSGS.MaxFileSize=10MB

3.4 创建logger类

创建一个logger类

.h文件

#pragma once

#include 
#include 
#include 
#include  
#include  
#include  
#include  

 pragma comment(lib, "../lib/Lib_Log/log4cplusSD.lib")
 
#define MY_LOG_FILE_PATH "./logconfig.properites"

using namespace std;
using namespace log4cplus;
using namespace log4cplus::helpers;

class CLogger
{
private:
	class CGabor
	{
	public:
		~CGabor() {
			if (CLogger::my_logger) {
				/*delete CLogger::my_logger;
				CLogger::my_logger = NULL;*/
			}
		}
	};
	static CGabor m_Gabor;
public:
	static CLogger* getInstance();
	Logger logger;
private:
	CLogger();
	~CLogger();
	static CLogger* my_logger;
};

.cpp文件

#include "Logger.h"

CLogger* CLogger::my_logger = NULL;
CLogger::CGabor CLogger::m_Gabor;
CLogger::CLogger()
{
	log4cplus::initialize();
	//Logger::getInstance(LOG4CPLUS_TEXT(MY_LOG_FILE_PATH));
	PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT(MY_LOG_FILE_PATH));
	logger = Logger::getRoot();
}

CLogger* CLogger::getInstance()
{
	if (my_logger == NULL)
	{
		my_logger = new CLogger();
	}
	return my_logger;
}

CLogger::~CLogger()
{
	log4cplus::Logger::shutdown();
	log4cplus::threadCleanup();

}

3.5 测试

新建main.cpp

#include "logger.h"

int main() {
	LOG4CPLUS_INFO(CLogger::getInstance()->logger,"start");
	LOG4CPLUS_INFO(CLogger::getInstance()->logger, "end");
	return 0;
}

运行即可生成项目目录下即可生成logInfo文件夹。
log4cPLus的搭建使用_第9张图片

你可能感兴趣的:(log4cPLus的搭建使用)