kondr1
@kondr1
golang, js, c++

Как заставить qt webkit сохранять уровень логирования javascript?

Столкнулся со следующей проблемой и никак не могу разобраться: qtwebkit работая с js на страницах выводит console.warn и console.error на уровне debug, а не на соответствующих им warning и сritical (или fatal, тут я не уверен). Подскажите, что я с этим могу сделать? Как совместить логирование js и qt?
  • Вопрос задан
  • 315 просмотров
Решения вопроса 1
EXL
@EXL
Энтузиаст
Начиная с Qt 5.6 и WebEngine в функции javaScriptConsoleMessage() доступны уровни логирования:

doc.qt.io/qt-5/qwebenginepage.html#javaScriptConso...
doc.qt.io/qt-5/qwebenginepage.html#JavaScriptConso...

Наследуетесь от QWebEnginePage, перегружаете javaScriptConsoleMessage() и используете так, как вам надо, как пример:
void WebEnginePage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level,
                                       const QString &message,
                                       int lineNumber,
                                       const QString &sourceID)
{
    Q_UNUSED(lineNumber);
    Q_UNUSED(sourceID);

    switch (level) {
    default:
    case QWebEnginePage::InfoMessageLevel:
        qDebug() << message;
        break;
    case QWebEnginePage::WarningMessageLevel:
        qWarning() << message;
        break;
    case QWebEnginePage::ErrorMessageLevel:
        qCritical() << message;
        break;
    }
}


P.S. У меня Qt 5.5.1, нет возможности проверить, но в документации сказано, мол: Since Qt 5.6, the default implementation logs the messages in a js logging category. Так что возможно даже перегружать ничего не нужно будет.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы