Ich bin neu in der Qt/QML-Thema und ich versuche, eine Protokollierung Handler in meiner C++ Business-Logik zu installieren. Das folgende Codestück installiert einen Handler und setzt eine spezielle Kategorie:Setzen Sie eine QML-Kategorie für console.log
int main(int argc, char *argv[])
{
qInstallMessageHandler(myMessageOutput);
QLoggingCategory mainEx("main.ex");
qCDebug(mainEx) << "debug message";
...
}
Das Ergebnis ist ein Anruf aus dem Qt-Backend auf die folgenden installierten Nachrichtenhandler:
void myMessageOutput(QtMsgType type, const QMessageLogContext &context,
const QString &msg)
{
...
}
In Qt 5 ist es auch möglich,
console.debug("debug message")
Aber die 'cateory' in QMessageLogConext ist immer 'QML': Debug-Nachrichten direkt in in QML mit zu schreiben. Ist es möglich, eine andere Kategorie direkt in QML zu setzen?
Es wäre schön zu wissen, warum Sie mehr Kategorien benötigen. Was versuchst du zu erreichen? Sie können andere Member ('file, function, line') von' QMessageLogConext' verwenden, um mehr Kontext für den Ursprung der Logging-Anweisung zu erhalten. – KD07
Ich möchte verschiedene QML-Erweiterungen in einer Anwendung verwenden und brauche ein Protokollierungssystem, mit dem ich Nachrichten abhängig von der Quelle drucken kann. Wenn beispielsweise in Kategorien "extension1" geschrieben wird und eine qDebug() - Nachricht festgelegt wird, wird diese Kategorie (einschließlich der Nachricht) im angepassten Handler angezeigt. Also kann ich anhand der Kategorie herausfinden, welche Erweiterung die qDebug-Nachricht erzeugt hat. – fischeth