实现Qt日志功能并输出到文件(qDebug\qWarning\ qCritical\qFatal)

<1>信息基本分类:
qDebug : 调试信息提示
qWarning : 一般的警告提示
qCritical: 严重错误提示
qFatal : 致命错误提示

<2>如何截获这些信息
Qt提供了qInstallMsgHandler 方法用来定制消息发生后如何来处理。
qInstallMsgHandler 是一个回调函数,主要是由qDebug、qWarnng、qCritical、qFatal这些函数进行触发,
也就是说,qDeubg这些函数处理的消息文本会被qInstallMsgHandler 所指向的回调函数截获,这样就允许用户自己来处理这些消息文本。
例如,你完全可以将这些消息文本输出并保存到相关的日志文件中。

<3>将qDebug()\qWarning()\qCritical()\qFatal() 信息输出到指定文件中
#include <qapplication.h>
#include <stdio.h>
#include <stdlib.h>

void customMessageHandler(QtMsgType type, const char *msg)
{
    QString txtMessage;

switch (type)
    {
        case QtDebugMsg: //调试信息提示
            txtMessage = QString("Debug: %1").arg(msg);
            break;

case QtWarningMsg: //一般的warning提示
            txtMessage = QString("Warning: %1").arg(msg);
            break;

case QtCriticalMsg: //严重错误提示
            txtMessage = QString("Critical: %1").arg(msg);
            break;

case QtFatalMsg: //致命错误提示
            txtMessage = QString("Fatal: %1").arg(msg);
            abort();
    }

//保存输出相关信息到指定文件
    QFile outputFile("customMessageLog.txt");
    outputFile.open(QIODevice::WriteOnly | QIODevice::Append);
    QTextStream textStream(&outputFile);
    textStream << txtMessage << endl;
}

int main( int argc, char * argv[] ) //demo示例
{
    QApplication app( argc, argv );

qInstallMsgHandler(customMessageHandler); //注册MsgHandler回调函数

//以后就可以像下面这样直接打日志到文件中,而且日志也会包含时间信息
    qDebug("This is a debug message");
    qWarning("This is a warning message");
    qCritical("This is a critical message");
    qFatal("This is a fatal message");

return app.exec();
}

<4>对应取消信息处理
直接调用qInstallMsgHandler(0)就可以了

时间: 2024-10-12 16:51:51

实现Qt日志功能并输出到文件(qDebug\qWarning\ qCritical\qFatal)的相关文章

Qt高级——Qt日志信息处理

Qt高级--Qt日志信息处理 一.Qt日志功能简介 Qt有Debug.Warning.Critical.Fatal四种级别的调试信息.qDebug:调试信息qWarning:警告信息qCritical:严重错误qFatal:致命错误Qt4提供了qInstallMsgHandler(Qt5:qInstallMessageHandler)对qDebug.qWarning.qCritical.qFatal等函数输出信息的重定向处理.qInstallMsgHandler是一个回调函数,由qDebug.q

Asp.net 使用log4net日志功能

Asp.net使用log4net日志功能 1. 在bin文件夹下面引入 log4net.dll.你只需要引入log4net.dll 既可,其他dll是我抠图的时候扣多了 2 . Global.asax 中加入 void Application_Start(object sender,EventArgs e) { // 在应用程序启动时运行的代码 log4net.Config.DOMConfigurator.Configure(); } 3.修改配置文件(web.config) log日志既可以写

Log4J日志配置详解和自定义log4j日志级别及输出日志到不同文件实现方法

Log4J日志配置详解 一.Log4j简介 Log4j有三个主要的组件:Loggers(记录器),Appenders(输出源)和Layouts(布局).这里可简单理解为日志类别,日志要输出的地方和日志以何种形式输出.综合使用这三个组件可以轻松地记录信息的类型和级别,并可以在运行时控制日志输出的样式和位置. 1.Loggers Loggers组件在此系统中被分为五个级别:DEBUG.INFO.WARN.ERROR和FATAL.这五个级别是有顺序的,DEBUG < INFO < WARN <

ASP.NET Core 2.1 : 十二.内置日志、使用Nlog将日志输出到文件

应用离不开日志,虽然现在使用VS有强大的调试功能,开发过程中不复杂的情况懒得输出日志了(想起print和echo的有木有),但在一些复杂的过程中以及应用日常运行中的日志还是非常有用. ASP.NET Core提供了内置的日志,但没弄明白这么把它输出到文件, 只能在VS的输出中查看, 谁知道怎么弄告诉我一下.(ASP.NET Core 系列目录) 本例 GitHub 一.内置日志的使用 上一篇:如何在后台运行一个任务  中使用到了内置的日志,直接在构造中注入一下,然后直接使用即可, 非常方便 pu

Google面试题—有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD

分类: windows编程 C++ 2012-10-27 19:56 3410人阅读 评论(1) 收藏 举报 有四个线程1.2.3.4.线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD.初始都为空.现要让四 个文件呈如下格式:A:1 2 3 4 1 2....B:2 3 4 1 2 3....C:3 4 1 2 3 4....D:4 1 2 3 4 1....请设计程序. [cpp] view plaincopy #include <stdio.h

.NET跨平台之旅:增加文件日志功能遇到的挫折

在将我们的ASP.NET 5示例站点(about.cnblogs.com)升级至ASP.NET 5 RC1的时候,我们增加了控制台日志功能. 在ASP.NET 5添加日志功能很简单,只需在project.json中添加Microsoft.Extensions.Logging.Console的引用: "dependencies":{ "Microsoft.Extensions.Logging.Console": "1.0.0-*" } 并且在 St

Logs日志文件太多怎么关闭日志功能————thinkphp

项目/Runtime/Logs/下的文件生成了很多很多,而且都是1M-2M的TXT文件有些网站小空间都被沾满了.哪位大虾知道怎么关闭这个日志功能'DB_SQL_LOG' => false, // SQL执行日志记录 /* 日志设置 */'LOG_RECORD' => false, // 默认不记录日志'LOG_TYPE' => 3, // 日志记录类型 0 系统 1 邮件 3 文件 4 SAPI 默认为文件方式'LOG_DEST' => '', // 日志记录目标'LOG_EXTR

多线程---有四个线程1、2、3、4。线程1的功能就是输出1,线程2的功能就是输出2,以此类推.........现在有四个文件ABCD

有四个线程1.2.3.4. 线程1的功能就是输出1, 线程2的功能就是输出2,以此类推---现在有四个文件ABCD. 初始都为空. 现要让四个文件呈如下格式: A:1 2 3 4 1 2-. B:2 3 4 1 2 3-. C:3 4 1 2 3 4-. D:4 1 2 3 4 1-. 请设计程序. 先试着写出四个线程交替写入A文件 public class FourThreadOneFile { public static FILE file = new FILE(); public stat

01Spring_基本jia包的导入andSpring的整体架构and怎么加入日志功能

1.什么是Spring : v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} Normal 0 7.8 磅 0 2 false false false EN-US ZH-CN X-NONE MicrosoftInternetExplorer4 /* Style De