栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QT 5.15.2 配置log4cplus-2.0.7

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QT 5.15.2 配置log4cplus-2.0.7

系列参考文章

log4cplus之基本使用方法及示例
VS2019配置log4cplus
C++ 设计实现日志系统 提示:这篇文章重点看,不错
C++日志库log4cplus快速入门
log4cplus_demo
可以了解make类似的工具Scons


文章目录
  • 系列参考文章
  • 前言
  • 一、准备
  • 二、编译步骤
    • 1. 建立Cmake编译输出目录log4cplus
    • 2. 设置环境变量
    • 3. 设置编译器
          • 3.1 configure->选择编译器为MinGW Makefiles
          • 3.2 点击下一步,选择好对应的gcc,g++编译器;
    • 4. Configure配置选项
    • 5. 编译
  • 三、使用步骤
    • 1.测试库
    • 2.配置文件
    • 3. 单列日志类
    • 4. 使用
    • 5.资源包
  • 总结


前言

利用Cmake 编译相应的库,从而方便QT MINGW73_64调用,MSVC 编译器同理


一、准备
  1. log3.0以上版本,编译器版本要支持c++17

  2. 安装cmake (cmake3.21.3版本)

  3. 从github下载文件Catch-master.zip和ThreadPool-master.zip log4cplus-2.0.7

  4. 其他下载链接、官方文档

二、编译步骤 1. 建立Cmake编译输出目录log4cplus

将Catch-master.zip和ThreadPool-master.zip分别解压到log4cplus源码下catch和threadpool目录

2. 设置环境变量

一个是QT 的mingw以及cmake的

3. 设置编译器 3.1 configure->选择编译器为MinGW Makefiles

3.2 点击下一步,选择好对应的gcc,g++编译器;

D:/Qt/Qt5.12.11/Tools/mingw730_64/bin/gcc.exe
D:/Qt/Qt5.12.11/Tools/mingw730_64/bin/g++.exe

4. Configure配置选项

勾选LOG4CPLUS_QT5,并设置好Qt5Core_DIR,然后点击Configure->Generate

5. 编译

上一步没报错就用mingw32-make编译,用管理员权限打开PowerShell

三、使用步骤 1.测试库

说明:把log4cplus下bin目录生成的库文件liblog4cplusU.dll, liblog4cplusqt5debugappenderU.dll拷贝到测试工程

如果要使用qt5debugappender,请把 liblog4cplusqt5debugappenderU.dll 和
liblog4cplusqt5debugappenderU.dll.a 也加到LIBS中来

INCLUDEPATH += $$PWD3rdpartyinclude
LIBS += -L$$PWD3rdpartylibs -lliblog4cplusU
2.配置文件

配置文件log.properties控制日志文件的生成,写个单例日志类读取配置文件

# ALL TRACE  DEBUG  INFO  WARN  ERROR  FATAL  OFF
log4cplus.rootLogger = TRACE,SA
log4cplus.logger.logConsole = TRACE,LC

#For database stuff, I don't need to logging everything, it's enough printing only errors!
#log4cplus.logger.DatabaseOperations=ERROR
#log4cplus.additivity.file=false

log4cplus.appender.LC=log4cplus::ConsoleAppender
log4cplus.appender.LC.EnCoding=utf-8
log4cplus.appender.LC.layout=log4cplus::PatternLayout
log4cplus.appender.LC.layout.ConversionPattern=[%D{%Y-%m-%d %H:%M:%S}] %m [%l]%n
 
#设置日志追加到文件尾
log4cplus.appender.SA=log4cplus::TimeBasedRollingFileAppender 
log4cplus.appender.SA.File = Mylogger.log
# 必须要先手动创建好log目录;否则无法创建文件
log4cplus.appender.SA.FilenamePattern= ./log/%d{yyyy-MM-dd_HH-mm}.log
log4cplus.appender.SA.Schedule = MINUTELY
log4cplus.appender.SA.CreateDirs = true
log4cplus.appender.SA.MaxHistory = 9999
log4cplus.appender.SA.RollOnClose = false
#设置日志文件大小
log4cplus.appender.SA.MaxFileSize = 100MB
#设置生成日志最大个数
log4cplus.appender.SA.MaxBackupIndex = 100
log4cplus.appender.SA.Append = true
log4cplus.appender.SA.layout=log4cplus::PatternLayout
log4cplus.appender.SA.layout.ConversionPattern=[%-5p][%D{%m/%d/%y %H:%M:%S:%Q}] [%t] %c - %m [%l]%n
 
#设置日志级别范围
log4cplus.appender.SA.filters.1=log4cplus::spi::LogLevelRangeFilter
log4cplus.appender.SA.filters.1.LogLevelMin=DEBUG
log4cplus.appender.SA.filters.1.LogLevelMax=FATAL
log4cplus.appender.SA.filters.1.AcceptOnMatch=true
log4cplus.appender.SA.filters.2=log4cplus::spi::DenyAllFilter
3. 单列日志类

MyLogger.h

#ifndef MYLOGGER_H
#define MYLOGGER_H
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#define MY_LOG_FILE "log.properties"


using namespace std;
using namespace log4cplus;
using namespace log4cplus::helpers;
//懒汉单列模式
class MyLogger
{
public:
    static MyLogger* getInstace();
    //static void deleteInstance();
    Logger logger;
    Logger console;
private:
     MyLogger();
     ~MyLogger(){
       cout << "Destory singleton for log4cplus!!" <
       public:
         Garbo(){}
         ~Garbo(){
             if(m_logger != NULL){
                 delete m_logger;
                 m_logger = nullptr;
             }
         }
     };
    static Garbo _garbo;
};

#endif // MYLOGGER_H

MyLogger.cpp

#include "mylogger.h"

MyLogger* MyLogger::m_logger = NULL;
mutex MyLogger::myMutex;
MyLogger::Garbo MyLogger::_garbo;

MyLogger *MyLogger::getInstace()
{
    if(NULL == m_logger){
        lock_guard mg(myMutex);
        if(NULL == m_logger){
             m_logger =new MyLogger;//在堆上建立
        }
    }
    return m_logger;
}

MyLogger::MyLogger()
{
    log4cplus::initialize();
    PropertyConfigurator::doConfigure(LOG4CPLUS_TEXT(MY_LOG_FILE));
    logger  = Logger::getRoot();
    console = Logger::getInstance(LOG4CPLUS_TEXT("logConsole"));
    cout<<"Create Singleton for log4cplus!"< 
4. 使用 
 MyLogger *pMyLogger = NULL;
 pMyLogger= MyLogger::getInstace();
 LOG4CPLUS_WARN(pMyLogger->logger, LOG4CPLUS_TEXT("Hello, World!"));

5.资源包

这是我编译好的Bin包和相关软件

总结

这是对QT 环境下log4cplus配置的一个说明,以及对log4cplus的一个了解!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873151.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号