Log4CPlus开源日志系统自定义封装使用。

LogUtils.h

#pragma once

#include "log4cplus/loglevel.h"
#include "log4cplus/ndc.h"
#include "log4cplus/logger.h"
#include "log4cplus/configurator.h"
#include "iomanip"
#include "log4cplus/fileappender.h"
#include "log4cplus/layout.h"
#include <log4cplus/loggingmacros.h>
#include <sstream>
#include <iostream>
#include <log4cplus/log4cplus.h>
#include <log4cplus/consoleappender.h>

using namespace log4cplus;
using namespace log4cplus::helpers;


#include <memory>

#define PATH_SIZE 128 

#define LOG4CPLUS_CONFIG_FILE "log.properties"



/// 记录追踪日志
#define LOG_TRACE(msg)   \
{ \
	CLogUtils::instance(); \
	LOG4CPLUS_TRACE(CLogUtils::_logger, msg); \
}
/// 记录调试日志
#define LOG_DEBUG(msg)   \
{ \
	CLogUtils::instance(); \
	LOG4CPLUS_DEBUG(CLogUtils::_logger, msg); \
}
/// 记录信息日志
#define LOG_INFO(msg)    \
{ \
	CLogUtils::instance();\
	LOG4CPLUS_INFO(CLogUtils::_logger, msg);\
}
/// 记录告警日志
#define LOG_WARNING(msg) \
{ \
	CLogUtils::instance(); \
	LOG4CPLUS_WARNING(CLogUtils::_logger, msg); \
}
/// 记录错误日志
#define LOG_ERROR(msg)   \
{ \
	CLogUtils::instance(); \
	LOG4CPLUS_ERROR(CLogUtils::_logger, msg); \
}
/// 记录致命日志
#define LOG_FATAL(msg)  \
{ \
	CLogUtils::instance(); \
	LOG4CPLUS_FATAL(CLogUtils::_logger, msg); \
}

using namespace std;
class CLogUtils
{
public:
	static CLogUtils* instance();

	static Logger _logger;
private:
	CLogUtils();
	virtual ~CLogUtils();

	static CLogUtils* m_lpCLogUtils;
};

LogUtils.cpp

#include "LogUtils.h"
#include <iostream>

using namespace std;
CLogUtils* CLogUtils::m_lpCLogUtils = nullptr;
Logger CLogUtils::_logger = log4cplus::Logger::getInstance(LOG4CPLUS_TEXT("ALL_MSGS"));

CLogUtils::CLogUtils()
{
    log4cplus::initialize();
    log4cplus::PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT(LOG4CPLUS_CONFIG_FILE));
}

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

CLogUtils* CLogUtils::instance()
{
    if (!m_lpCLogUtils)
    {
        m_lpCLogUtils = new CLogUtils();
    }
    return m_lpCLogUtils;
}

test_demo.cpp

#include <iostream>
#include "LogUtils.h"

int main()
{
    char szData[128] = "此文件包含 main 函数。程序执行将在此处开始并结束";
    for (int i = 0; i < 1000000; i++)
    {
        LOG_DEBUG(szData);
    }

    std::cout << "Hello World!\n";
}

配置参数log.properties

#根Logger日志输出级别=TRACE,默认输出所有级别日志
log4cplus.rootLogger=TRACE,ALL_MSGS

#输出到控制台
log4cplus.appender.STDOUT=log4cplus::ConsoleAppender
log4cplus.appender.STDOUT.layout=log4cplus::PatternLayout
log4cplus.appender.STDOUT.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S:%Q}|%-5p|%t|%l|%m%n

#输出到文件
log4cplus.appender.ALL_MSGS=log4cplus::RollingFileAppender
#日志名称
log4cplus.appender.ALL_MSGS.File=app.log
#日志输出格式
log4cplus.appender.ALL_MSGS.layout=log4cplus::PatternLayout
#本地时间4位年2位月2位日 2位时:2位分:2位秒:6位毫秒 [线程ID] 5位日志级别 - 原始信息换行符
log4cplus.appender.ALL_MSGS.layout.ConversionPattern=%D{%Y-%m-%d %H:%M:%S:%Q}|%-5p|%t|%l|%m%n
#最大文件大小,当小于200kb的时候,默认为200kb,单位有(MB、KB)
log4cplus.appender.ALL_MSGS.MaxFileSize= 10MB
#最多文件个数
log4cplus.appender.ALL_MSGS.MaxBackupIndex=30

 

 

Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐