zoukankan      html  css  js  c++  java
  • Qslog以及自己封装

    一、参考地址

    https://blog.csdn.net/zyhse/article/details/106736673

    二、git网址

    https://blog.csdn.net/zyhse/article/details/106736673

    三、源代码使用

    3.1、下载,下面勾选的就是需要的源码

     3.2、源码加入到自己的工程

     3.3、包含源码

    .pro里:

    3.4、在Qslog.pri里新建类,ZLog

     3.5、ZLog定义

    Zlog.h

    #ifndef ZLOG_H
    #define ZLOG_H
    
    #include "QsLog.h"
    #define LOG_PATH "./log/log.txt"
    #define ZLOG_TRACE() 
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::TraceLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::TraceLevel).stream()
    #define ZLOG_DEBUG() 
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::DebugLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::DebugLevel).stream()
    #define ZLOG_INFO()  
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::InfoLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::InfoLevel).stream()
    #define ZLOG_WARN()  
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::WarnLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::WarnLevel).stream()
    #define ZLOG_ERROR() 
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::ErrorLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::ErrorLevel).stream()
    #define ZLOG_FATAL() 
        if (QsLogging::Logger::instance().loggingLevel() > QsLogging::FatalLevel) {} 
        else QsLogging::Logger::Helper(QsLogging::FatalLevel).stream()
    
    using namespace QsLogging;
    class ZLog
    {
    public:
        static ZLog* instance;
        static ZLog* getInstance();
        static void setLoggingLevel(const Level& newLevel);
        static void setDestIsFile(const QString& path, const int& maxSize, const int& logCount);
        static void setDestIsCmd();
    protected:
        ~ZLog();
    
    private:
        ZLog();
        ZLog(const ZLog&){}
        ZLog& operator = (const ZLog&){
            return *this;
        }
    private:
    };
    
    #endif // ZLOG_H

    setLoggingLevel:设置最小需要处理的日志的等级

    setDestIsFile:设置日志输出到文件

    setDestIsCmd:设置日志输出到CMD【和setDestIsFile,只设置其中一个就行】

    ZLog.cpp

    #include "zlog.h"
    
    /*****************************************************************/
    //作者:单例初始化
    //函数名称:NULL
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:NULL
    /*****************************************************************/
    ZLog* ZLog::instance = nullptr;
    ZLog *ZLog::getInstance()
    {
        if(nullptr == instance){
            instance = new ZLog();
        }
        return instance;
    }
    
    /*****************************************************************/
    //作者:朱小勇
    //函数名称:设置日志等级
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:当日志真实等级大于这个时就会被使用
    /*****************************************************************/
    void ZLog::setLoggingLevel(const Level& newLevel)
    {
        Logger& logger = Logger::instance();
        logger.setLoggingLevel(newLevel);
    }
    
    /*****************************************************************/
    //作者:朱小勇
    //函数名称:设置文件输出到文件
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:NULL
    /*****************************************************************/
    void ZLog::setDestIsFile(const QString &path, const int &maxSize, const int &logCount)
    {
        Logger& logger = Logger::instance();
        DestinationPtr fileDestination(DestinationFactory::MakeFileDestination(path, EnableLogRotation, MaxSizeBytes(maxSize), MaxOldLogCount(logCount)));
        logger.addDestination(fileDestination);
    }
    
    /*****************************************************************/
    //作者:朱小勇
    //函数名称:设置文件输出到控制台
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:NULL
    /*****************************************************************/
    void ZLog::setDestIsCmd()
    {
        Logger& logger = Logger::instance();
        DestinationPtr debugDestination(DestinationFactory::MakeDebugOutputDestination());
        logger.addDestination(debugDestination);
    }
    
    /*****************************************************************/
    //作者:朱小勇
    //函数名称:构造函数
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:NULL
    /*****************************************************************/
    ZLog::ZLog()
    {
    
    }
    
    /*****************************************************************/
    //作者:朱小勇
    //函数名称:析构函数
    //函数参数:NULL
    //函数返回值:NULL
    //函数作用:NULL
    //备注:NULL
    /*****************************************************************/
    ZLog::~ZLog()
    {
        QsLogging::Logger::destroyInstance();
        delete instance;
        instance = nullptr;
    }

    3.6、使用

    #include "zlog.h"
    if(LOG_DEST_FILE){
         ZLog::getInstance()->setDestIsFile(LOG_PATH,
                                            LOG_FILE_SIZE,
                                            LOG_FILE_COUNT);
       ZLog::getInstance()->setLoggingLevel(InfoLevel); ZLOG_INFO()
    << "zlog inited, log will be append to file"; }else{ ZLog::getInstance()->setDestIsCmd(); ZLog::getInstance()->setLoggingLevel(InfoLevel); ZLOG_INFO() << "zlog inited, log just append to cmd"; } ZLOG_INFO() << "zlog inited, log just append to cmd";


    ps:

    ①、原来的Qslog也可以直接使用,但是设置的地方有点多,我定义了了一个自己的单例类:ZLog,只需要两个步骤:

    1、setDestIsFile或者setDestIsCmd
    2、setLoggingLevel

    即可在工程里任意使用日志功能:【需要包含zlog.h】

    ZLOG_TRACE()
    ZLOG_DEBUG()
    ZLOG_INFO()
    ZLOG_WARN()
    ZLOG_ERROR()
    ZLOG_FATAL()

    四、动态库使用

    待研究

  • 相关阅读:
    vim中如何设置多行注释和删除注释
    ubuntu如何设置普通用户密码
    ubuntu中出现syntax error:Bad for loop variable
    学习进度条
    单元测试练习
    用户体验设计案例分析
    学生成绩录入系统设计与实现
    需求分析
    结对项目——词频统计2
    结对项目—— 词频统计
  • 原文地址:https://www.cnblogs.com/judes/p/14006072.html
Copyright © 2011-2022 走看看