Qt HTTP サーバのログ

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" が有効になります。

QLoggingCategoryQHttpServerも参照して ください。

本ドキュメントに含まれる文書の著作権は、それぞれの所有者に帰属します 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。