Projet

Général

Profil

AbulEduDebugV1

Cette librairie s'appuie sur les nouveautés Qt5 en matière de log.

Les grosses améliorations qui me rendent joyeux :
  • Catégorisation des logs grâce à la macro Q_LOGGING_CATEGORY()
  • Possibilité d'écriture des log sans écriture d'une classe multithreadée (qui cause des soucis sous android)
  • Pattern des messages de log en utilisant une syntaxe type "html" (attention c'est pas du html) avec des conditions :
    qSetMessagePattern("[%{time yyyyMMdd h:mm:ss.zzz} %{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif} %{category}] %{file}:%{line} - %{message}");
    // -> ce qui donne dans le fichier de log : 
    [20160108 15:57:10.847 D mainwindow] ../QtLoggingCategories/mainwindow.cpp:11 - Loading Ui
    
  • Utilisation de la syntaxe de debug standard Qt
  • Possibilité de gérer les debug par simple fichier ini (et ça c'est la classe) : le fichier doit s'appeler qtlogging.ini et voici ce qu'on pourrait faire :
    [Rules]
    *.debug=false
    mainwindow=true
    abuledufilev1=false
    abuledufilev1.abuleduboxfilemanagerv1=true
    

Explications :
1. On désactive tous les logs
2. sauf les logs de mainwindow
3. pas de log de toutes les classes provenant de la librairie abuledufilev1
4. sauf la classe abuleduboxfilemanagerv1 comprise dans abuledufilev1

Je trouve ça trop fort, tout ça sans recompiler le code. Il est donc possible de debugguer ou d'avoir une trace quand on le souhaite d'un logiciel en production (ie version stable)

J'implémente et je documente au fur et à mesure.

Petite note : vu qu'on développe toujours dans les libs (je viens de voir des commits d'Eric qui m'obligent à merger), j'applique une autre tactique :

bzr uncommit
bzr shelve --all -m "[#4666] #1 suppression reference abuleduloggerv1 : retour QDebug" 
bzr pull

Comme ça mes améliorations sont "aside" et permettent de puller tranquille. Je pourrais pusher quand tout sera ok/validé !

Redmine Appliance - Powered by TurnKey Linux