QT日志文件

/* 日志类,提供日志打印和日志文件写入 */
#ifndef LOGABLE_H
#define LOGABLE_H

#include <QFile>
#include <QDebug>
#include <QMessageBox>
#include <QVariantList>
#include "commonStruct.h"

enum LOGLEVEL
{            
    LOG_DEBUG = 0,      /**< Debug >**/  
    LOG_INFO,           /**< Info >**/  
    LOG_WARN,           /**< Warn >**/  
    LOG_ERROR           /**< Error >**/  
};

class LogWriter
{  
public:

    LogWriter();  

    ~LogWriter();

    void PrintLog(LOGLEVEL level, const char* msg, ...);  

    void SaveFileLog(LOGLEVEL level, const char* msg, ...);  

    void setLogPath(QString logPath);         //defalut: current path  

    void setLogLevel(LOGLEVEL logLevel);      //defalut: LOG_DEBUG

private:  

    QString _logPath;  

    LOGLEVEL _logLevel;  

private:  

    QString getLevelStr(LOGLEVEL level);  

};  

#endif

#include "logable.h"
#include <QDir>
#include <QDateTime>

LogWriter::LogWriter()  
{  
    _logLevel = LOG_DEBUG;  
    _logPath = QDir::currentPath();  
}  

LogWriter::~LogWriter()  
{  
}  

void LogWriter::PrintLog(LOGLEVEL level, const char *msg,  ...)  
{  
    if (level < _logLevel)  return;     //low level  
    char logBuffer[8192] = {0};  
    va_list vl_fmt;                     //buffer  
    va_start(vl_fmt, msg);  
    vsprintf(logBuffer, msg, vl_fmt);  
    va_end(vl_fmt);  

    QString fileTime = "";  
    QString logTime = "";  
    QString logLevel = getLevelStr(level);  
    fileTime = QDateTime::currentDateTime().toString("yyyyddMM");  
    logTime = QDateTime::currentDateTime().toString("yyyy-dd-MM hh:mm:ss.zzz");  
    qDebug("[%s] [%s] {%s}", logTime.toStdString().c_str(), logLevel.toStdString().c_str(), logBuffer);  
}  

void LogWriter::SaveFileLog(LOGLEVEL level, const char *msg,  ...)  
{  
    if (level < _logLevel)  return;  //low level  
    char logBuffer[8192] = {0};  
    va_list vl_fmt;                  //buff  
    va_start(vl_fmt, msg);  
    vsprintf(logBuffer, msg, vl_fmt);  
    va_end(vl_fmt);  

    QString logTime = "";  
    QString fileTime = "";  
    fileTime = QDateTime::currentDateTime().toString("yyyyddMM");  
    logTime = QDateTime::currentDateTime().toString("[yyyy-dd-MM hh:mm:ss.zzz]");  
    QString logLevel = getLevelStr(level);  
    QString logFile = _logPath;  
    if (logFile.right(1) != "/") {  
        logFile += "/";  
    }  
    QDir mDir(logFile);  
    if (!mDir.exists()) {  
        mDir.mkpath(logFile);  
    }  
    logFile += "isoft_";  
    logFile += fileTime;  
    logFile += ".log";  

    QFile file(logFile);  
    file.open(QIODevice::ReadWrite | QIODevice::Append | QIODevice::Text);  
    QTextStream out(&file);  
    out << logTime << " [" << logLevel << "] " << "{" << logBuffer << "}" << endl;  
    file.close();  
}  

QString LogWriter::getLevelStr(LOGLEVEL level)  
{  
    switch(level) 
    {  
        case LOG_DEBUG: return "LOG_DEBUG"; break;
        case LOG_INFO: return "LOG_INFO"; break;
        case LOG_WARN: return "LOG_WARN"; break;
        case LOG_ERROR: return "LOG_ERROR"; break;
    }
    return "";
}  

void LogWriter::setLogPath(QString logPath)  
{  
    _logPath = logPath;  
}  

void LogWriter::setLogLevel(LOGLEVEL logLevel)  
{  
    _logLevel = logLevel;  
}  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值