admin 发表于 2024-5-4 19:19:53

QT上的一个打印调试到文件的函数

#include <qtextstream.h>
#include <qdatetime.h>
#include <dlfcn.h>
#include <QFile>
#include <QDir>

/*************************************************
Description:    // 获取函数运行信息
Input:          // func - 函数指针
*************************************************/
QString identify_function_ptr(void* func)
{
    Dl_info info;
    int rc = dladdr(func,&info);
    return info.dli_fname;
}
/*************************************************
Description:    // 打印调试信息到文本文件
Input:          // outSt - 字符 filename - 文件名
*************************************************/
void DPrintfToFile(QString outSt,QString filename)
{
    //默认文件名
    if(filename=="")
    {
      filename = "DebugLog.txt";
    }

    //路径
    QString filePath = identify_function_ptr((void*) identify_function_ptr);
    QFileInfo fileInfo(filePath);
    QString directoryPath = fileInfo.dir().path() + "/" + filename;
    QFile fileError(directoryPath);
    if(fileError.open(QIODevice::ReadWrite|QIODevice::Text|QIODevice::Append)){
      // 将内容写入文件
      QTextStream out(&fileError);
      out.setCodec("UTF-8");
      QDateTime dateTime= QDateTime::currentDateTime();//获取系统当前的时间
      QString strTime = dateTime.toString("yyyy-MM-dd hh:mm:ss");//格式化时间
      out.seek(0);
      out << strTime << ":" << outSt << "\n";
      fileError.close();
    }
}
页: [1]
查看完整版本: QT上的一个打印调试到文件的函数