Maison > développement back-end > C++ > Comment puis-je rediriger les sorties QDebug, QWarning et QCritical dans Qt ?

Comment puis-je rediriger les sorties QDebug, QWarning et QCritical dans Qt ?

DDD
Libérer: 2024-11-04 12:09:29
original
802 Les gens l'ont consulté

How can I redirect QDebug, QWarning, and QCritical output in Qt?

Redirection des sorties QDebug, QWarning et QCritical

Dans Qt, les informations de débogage sont souvent imprimées sur la console à l'aide de qDebug() et d'autres instructions similaires. Il peut être utile de rediriger cette sortie vers un fichier, en particulier pour le développement multiplateforme. Cela évite d'utiliser des scripts shell et fournit une solution plus cohérente.

Gestionnaire de messages personnalisé

Pour rediriger la sortie de débogage, Qt fournit la fonction qInstallMessageHandler(). Cela vous permet d'installer un gestionnaire de messages personnalisé qui traite les messages avant leur impression. Voici un exemple de gestionnaire :

<code class="cpp">void myMessageOutput(QtMsgType type, const QMessageLogContext &context, const QString &msg)
{
    QByteArray localMsg = msg.toLocal8Bit();
    switch (type) {
    case QtDebugMsg:
        fprintf(stderr, "Debug: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        break;
    case QtInfoMsg:
        // ...
    case QtWarningMsg:
        // ...
    case QtCriticalMsg:
        // ...
    case QtFatalMsg:
        fprintf(stderr, "Fatal: %s (%s:%u, %s)\n", localMsg.constData(), context.file, context.line, context.function);
        abort();
    }
}</code>
Copier après la connexion

Ce gestionnaire envoie les messages vers stderr, mais vous pouvez remplacer stderr par un flux de fichiers pour rediriger la sortie.

Installation

Vers installez le gestionnaire personnalisé, appelez qInstallMessageHandler() dans votre fonction main() :

<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
Copier après la connexion

Une fois installés, tous les messages qDebug et similaires seront redirigés vers le gestionnaire et écrits dans le fichier ou le flux que vous avez spécifié.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal