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é !