Partage
  • Partager sur Facebook
  • Partager sur Twitter

Systeme de log sous qt

    24 juillet 2020 à 21:54:51

    Bonjour à tous,

    Voilà j'ai un petit problème au niveaux de l'écriture dans un fichier log.

    Je me sers de ce fichier log pour faire des test pour le moment. Dans mon application j'utilise des méthode static pour pour écrire les logs.

    class appUtil
    {
    
    
    public:
        appUtil();
        static void appentToLog(QString messageLog,appflag::OptionTrace trace);
    
    };

    J'ai créer des flags pour géerer l'informtion à mettre dans les traces.

    Je trace le démarrage de l'application et la fermeture pour le moment via ceci

    void appUtil::appentToLog(QString messageLog,appflag::OptionTrace traceFlag)
    {
            QString from;
            QString type;
            QString severity;
            QTime time=QTime::currentTime();
            QFile traceFile(appUtil::nameLogFileCurrent);
            // Recupération de la provenance
            if(traceFlag.testFlag(appflag::TraceType::FromDb))
            {
                from="DB";
            }
            else if(traceFlag.testFlag(appflag::TraceType::FromApp))
            {
                from="APP";
            }
            else
            {
                from="NOT FROM ALLOUED";
            }
            // Recupération du type
            if(traceFlag.testFlag(appflag::TraceType::Warning))type="WARNING";
            else if(traceFlag.testFlag(appflag::TraceType::Information))type="INFORMATION";
            else if(traceFlag.testFlag(appflag::TraceType::Error))type="ERROR";
            else
            {
                type="NOT TYPE ALLOUED";
            }
            // Recuperation de la severiter
            if(traceFlag.testFlag(appflag::TraceType::Low))severity="LOW";
            else if(traceFlag.testFlag(appflag::TraceType::Severe))severity="SEVERE";
            else if(traceFlag.testFlag(appflag::TraceType::Medium))severity="MEDIUM";
            else
            {
                severity="NOT SEVERITY ALLOUED";
            }
            if(traceFile.open(QFile::WriteOnly | QIODevice::Append))
                    {
                        QTextStream flux(&traceFile);
    
                        flux << "\nTrace ["<<from<<" "<<severity<<" "<<type<<"]:["<< time.hour()<<"H]:["<<time.minute()<<"min]:["<< time.second()<<"sec]:["<<time.msec()<<"ms]\t"<<messageLog<<".";
                        // flux .flush(); // ne change rien
    qDebug() << "\nTrace ["<<from<<" "<<severity<<" "<<type<<"]:["<< time.hour()<<"H]:["<<time.minute()<<"min]:["<< time.second()<<"sec]:["<<time.msec()<<"ms]\t"<<messageLog<<"."; } traceFile.close(); }

    Cela fonctionne au première appel qui est la connection, mais si je fais un 2eme appel à la fin du programme ou même juste après la première fois de cette manière

          appUtil::appentToLog("Test connection db succesfull",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromDb);
          appUtil::appentToLog("blldsfqfdqssdq",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);

    je n'ai que la première d'inscrite dans le fichier log. Je n'arrive pas à trouvé pourquoi, j'ai regarder sur le net et j'ai essayer le flush. Fin je suis un peu pperdu si quelqu'un à une idée :)

    Edit ::

    Les deux fonctions ajoute l'une après l'autre fonctionnent. Le log se met bien à jour

          appUtil::appentToLog("Test connection db succesfull",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromDb);
          appUtil::appentToLog("blldsfqfdqssdq",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);



    Mais par contre quand je veux notifier la fermeture de l'app

    void MainWindow::closeEvent(QCloseEvent* event) {
            int resultat = QMessageBox::information(0,"Quitter?","Voulez-vous vraiment quitter?",QMessageBox::Ok | QMessageBox::Cancel);
    
            if (resultat == QMessageBox::Ok)
            {
                 appUtil::appentToLog("Fermeture du programme",appflag::FromApp|appflag::Medium|appflag::Information);
                 event->accept();
            }
            else event->ignore();
    }

    La ça veux pas ce qui est bisarre c'est si je rappel ma fonction de suite elle écrit dans le fichier mais par contre dès que je fais une operation entre les 2 genre une assignation cela ne fonctionne plus

          appUtil::appentToLog("Test connection db succesfull",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromDb);
          appUtil::appentToLog("blldsfqfdqssdq",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);
    
          bool isCorectlyinitialized =checkDir();
          appUtil::appentToLog("f",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);
          appUtil::appentToLog("x",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);
          appUtil::appentToLog("z",appflag::TraceType::Warning | appflag::TraceType::Severe |appflag::TraceType::FromApp);
    
          initLogin();





    -
    Edité par Don_raftapss 24 juillet 2020 à 22:12:26

    • Partager sur Facebook
    • Partager sur Twitter
      25 juillet 2020 à 1:23:31

      Lu',

      tu as debuggé ton programme en mode pas à pas ou tu t'es juste contenté de regarder le fichier de log?

      • Partager sur Facebook
      • Partager sur Twitter

      Eug

        25 juillet 2020 à 13:07:53

        Salut,

        Non j'ai regardé pas à pas et les fichier log.

        Mais j'ai fini par trouver. Dans mon programme j'ai 2 directory un qui sert aux log et un autre qui contient des fichier de l'app.

        Dans la structure du programme j'ai initialiser les trace avant de créer le deuxième directory de l'app après les traces. 

        bool isCorectlyinitialized =checkDir();

        J'ai inverser et miracle cela fonctionne. Je pense donc que l'objet 

        QTextStream flux(&traceFile);

        Reste dans le dernier directory current.

        Je fais des tests supplémentaire pour déceler se bug

        • Partager sur Facebook
        • Partager sur Twitter

        Systeme de log sous qt

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown