> 백엔드 개발 > C++ > Qt에서 QDebug, QWarning 및 QCritical 출력을 어떻게 리디렉션할 수 있습니까?

Qt에서 QDebug, QWarning 및 QCritical 출력을 어떻게 리디렉션할 수 있습니까?

DDD
풀어 주다: 2024-11-04 12:09:29
원래의
802명이 탐색했습니다.

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

QDebug, QWarning 및 QCritical 출력 리디렉션

Qt에서 디버깅 정보는 qDebug() 및 기타 유사한 문을 사용하여 콘솔에 인쇄되는 경우가 많습니다. 특히 크로스 플랫폼 개발의 경우 이 출력을 파일로 리디렉션하는 것이 유용할 수 있습니다. 이렇게 하면 쉘 스크립트를 사용하지 않고 보다 일관된 솔루션을 제공할 수 있습니다.

사용자 정의 메시지 처리기

디버그 출력을 리디렉션하기 위해 Qt는 qInstallMessageHandler() 함수를 제공합니다. 이를 통해 메시지가 인쇄되기 전에 처리하는 사용자 정의 메시지 처리기를 설치할 수 있습니다. 다음은 예제 핸들러입니다.

<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>
로그인 후 복사

이 핸들러는 메시지를 stderr로 출력하지만 stderr을 파일 스트림으로 대체하여 출력을 리디렉션할 수 있습니다.

설치

하려면 사용자 정의 핸들러를 설치하고 main() 함수에서 qInstallMessageHandler()를 호출하십시오.

<code class="cpp">qInstallMessageHandler(myMessageOutput);</code>
로그인 후 복사

설치가 완료되면 모든 qDebug 및 유사한 메시지가 핸들러로 리디렉션되어 지정한 파일이나 스트림에 기록됩니다.

위 내용은 Qt에서 QDebug, QWarning 및 QCritical 출력을 어떻게 리디렉션할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿