Qt HTTP Server 日志记录

Qt HTTP Server 使用QLoggingCategory 类进行日志记录。以"qt.httpserver" 开头的日志类别由 Qt HTTP Server 的不同部分使用。这些日志类别的启用与禁用请参阅QLoggingCategory 。

要动态启用或禁用日志记录,请调用QLoggingCategory::setFilterRules()。服务器可以通过如下所示调用QHttpServer::route() 函数,添加一个 URL 来更改过滤规则。

#include <QCoreApplication>
#include <QHttpServer>
#include <QLoggingCategory>

int main(int argc, char** argv)
{
    QCoreApplication app(argc, argv);
    QHttpServer server;
    auto tcpserver = std::make_unique<QTcpServer>();
    if (!tcpserver->listen(QHostAddress::LocalHost, 8000) || !server.bind(tcpserver.get()))
        return -1;
    tcpserver.release();

    server.route("/loggingFilter", [] (const QHttpServerRequest &request) {
        QString filter;
        QTextStream result(&filter);
        for (auto pair : request.query().queryItems()) {
            if (!filter.isEmpty())
                result << "\n";
            result << pair.first << "=" << pair.second;
        }
        QLoggingCategory::setFilterRules(filter);
        return filter;
    });

    return app.exec();
}

现在可以使用以下方式设置过滤规则:"http://127.0.0.1:8000/loggingFilter?qt.httpserver=true&appname.access=true" 。在此情况下,将启用所有Qt HTTP Server 日志记录,此外还启用了假设的日志类别appname.access 。

另请参阅 QLoggingCategory 和QHttpServer 。

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.