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