Servizi di accesso e Qt

Quali registrazione, servizi utilizzo di pentecoste Qt ?

Scegli qDebug(), qWarning(), qCritical(), qFatal() metodi, o forse qualcosa di simile Log4cpp (Log4cplus etc.), o forse qualche custom-fatto di codice ?

InformationsquelleAutor cybevnm | 2009-10-09

 

8 Replies
  1. 10

    Esistente C++ librerie di registrazione sono troppo pesanti per i miei gusti, quindi ho creato un custom front-end basato su idee da La registrazione in C++ per Qt qInstallMsgHandlerq back-end. È multi-piattaforma e thread-safe. Un giorno mi dovranno ripulire il codice e rilasciarlo per il mondo 🙂

    Un’alternativa interessante per il Qt è QxtLogger.

    • Forse QxtLogger è la soluzione migliore per Qt progetti. Unico neo (a mio parere), che questo strumento fa parte di abbastanza grande biblioteca. Comunque, grazie per il tuo consiglio.
    • Ho pubblicato la mia libreria di registrazione al sito bitbucket.org/razvanpetru/qt-components/downloads
    • Ok. Darò un’occhiata. Grazie
    • Solo per aggiornamento – ora c’è un ufficiale developer.nokia.com/Community/Wiki/…
    • Peccato che tutti i collegamenti sono ormai rotto, speravo di prendere un look.
    • Come funziona questo testo si qualificano come una risposta “Esistente C++ librerie di registrazione sono troppo pesanti per i miei gusti, quindi ho creato un custom front-end basato su idee dalla Registrazione in C++ per il Qt qInstallMsgHandlerq back-end. È multi-piattaforma e thread-safe. Un giorno mi dovranno ripulire il codice e rilasciarlo per il mondo :)”.. Che “esistente C++ librerie di registrazione” ti riferisci? E perché sono “troppo pesante”? Anche, come fa la tua raccolta personalizzata di risolvere il problema? Benchmark? E, soprattutto, come fa a risolvere i lettori di’ problema, se non è disponibile per l’uso?

  2. 12

    Se si sta lavorando in un singolo thread, qDebug e tale lavoro abbastanza bene, o si può anche modificare un po ‘ installando il proprio gestore con qInstallMessageHandler in QT 5.0+, o qInstallMsgHandler nel vecchie versioni.

    Nota: le versioni Precedenti di qDebug() ecc…. dove si è utilizzato qInstallMsgHandler (sconsigliato, ad esempio,http://doc.qt.io/archives/4.6/qtglobal.html#qDebug) non sono thread-safe. Se si utilizza thread, che si sarebbero schiantati/pausa male. Internamente è stato utilizzato QTextStream, che era rientrante, ma non è thread-safe.

    • +1 Grazie per il qDebug thread-consigli di sicurezza
    • -1 qDebug() è thread-safe. Il filo di sicurezza di QTextStream è irrilevante, perché non c’è condivisa QTextStream. Ogni invokation di qDebug() ottiene il proprio QTextStream.
    • Grazie. Se qDebug è sicuro, allora non è per il motivo dato da DarrylC. Se si installa il proprio thread-safe QtMessageHandler poi qDebug sarà thread-safe. Il gestore di default può interleave uscita, ma non credo che c’è una data razza/UB, anche se non posso dimostrarlo.
    • Ti ha sorpreso sapere che così come è certo, dal momento che molte persone non hanno accesso a Meego e la fonte che ha mostrato alla fine del 2010/inizio 2011. Che è stato il fallimento di allora (e anche su Symbian, se non ricordo male). Cosa succede ora, io non so, ma ancora non dovrebbe fare affidamento su qualcosa che è thread-safe, che non è documentato come essere thread-safe, se si desidera che il software utilizzato per più di un usa-e-getta prototipo. Che è il modo per ottenere il codice di muffa: affidamento su accidentale comportamento di oggi di attuazione, piuttosto che in base alle specifiche.
    • qDebug e amici sono documentate essere thread-safe (e sono sempre stati thread-safe, almeno in Qt 4, 5 volte): doc.qt.io/qt-5/qtglobal.html#qDebug
  3. 4

    QDebug è il modo migliore per andare, come si presenta out-of-the-box di integrazione con il resto del quadro, non è una dipendente di 3 ° parti di codice e copre quasi tutti di registrazione esigenze.

    • Ma non accedere a file o il registro eventi di sistema.
    • Non che, per impostazione predefinita, ma non è un buon modo predefinito, come per me. Se si desidera reindirizzare qDebug, fare riferimento a questo post stackoverflow.com/questions/4954140/…
    • So che si può ri-percorso qDebug. Ancora la sua non è abbastanza flessibile per un maturo applicazione.
  4. 3

    Io non sto usando Qt, ma per la registrazione sto utilizzando una versione modificata del Dr’Dobb del La registrazione in C++. Codice originale può essere trovato qui.

    Le mie modifiche sono specifici per la piattaforma Microsoft Windows (fopen non consente la lettura di file sharing) e può essere trovato qui.

    • In Qt diverse classi hanno un abbastanza comodo e leggibile la serializzazione strutture, che ihmo dovrebbe essere chiamato da un buon Qt-libreria di registrazione impliciti. Generale C++ registrazione quadro è qui non è abbastanza buono.
  5. 3

    Per quanto riguarda la risposta dicendo “Purtroppo qDebug (), etc. non sono thread-safe. Se si utilizza thread, che andrà in crash/pausa male. Internamente si utilizza QTextStream, che è rientrante, ma non è thread-safe.”

    Dubito seriamente che, qDebug è stato progettato per essere utilizzati contemporaneamente. Un bug se non è vero.

    • La fonte sembra essere qtcentre.org/threads/…
    • Dubbio o no, non importa. Nel 2011, su almeno 1 piattaforma, utilizza da più thread ha fatto crash. Se non è documentato come thread-safe, quindi dovrebbe essere assunto per non essere thread-safe, perché la realizzazione è soggetto a cambiamenti, il che significa che non è un bug, se non funziona. Se si desidera garantire che l’attuazione non cambia, allora avete bisogno di copiare la funzionalità, il che significa che si sta effettivamente scrivendo la propria versione (o comunque solo con un inizio di testa). Se il doc dice che è thread-safe di una versione particolare, allora si può utilizzare.
    • Ora documentato per essere thread-safe: doc.qt.io/qt-5/qtglobal.html#qDebug
  6. 1

    Dipende da come si desidera utilizzare i dati di log.

    Se viene utilizzato per il debug in fase di runtime, qWarning() avrebbe fatto bene.

    Se avete bisogno di eseguire il debug retrospettiva (di solito lato server), del codice), il caro vecchio file di testo sono i migliori. È meglio organizzare i file di registro di giorno log viene scritto.

Lascia un commento