Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Logger C++

3 réponses
Avatar
Michael
Bonsoir à tous,

je pense que ma question est un peu HS, mais j'aimerais profiter de votre
expérience à tous en la matière pour me conseiller, et répondre aux quelques
questions que je me pose.

J'aimerais ajouter un système de log à mon appli, pour déterminer plus
rapidement la source d'une erreur.

Quelles librairies existent en C++ pour ça? J'ai essayé log4cpp, mais
apparement ça fonctionne pas avec BCB6. J'ai aussi entendu parler d'une
librairie chez boost, mais j'ai pas trouvé.

Quelles sont les actions que vous mettez en log ds vos applis? Je sais déjà
que je vais logger les échanges avec une base de données, ainsi que les
échanges avec DirectX. Mais dans le code "normal", comment distinguer ce qui
vaut la peine de l'être?

J'imagine que c'est abusif de tout logger...

Enfin, comment déterminer lorsqu'une exception ou une assertion est lancée,
tout le parcours du code dans les diverses fonctions de l'appli, pour
permettre de remonter facilement à la source? (Un peu comme le fait le
debugger en somme)

Merci de vos éclaircissements

@+

Mike

3 réponses

Avatar
Michael DOUBEZ
Bonsoir à tous,

je pense que ma question est un peu HS, mais j'aimerais profiter de votre
expérience à tous en la matière pour me conseiller, et répondre aux quelques
questions que je me pose.

J'aimerais ajouter un système de log à mon appli, pour déterminer plus
rapidement la source d'une erreur.

Quelles librairies existent en C++ pour ça? J'ai essayé log4cpp, mais
apparement ça fonctionne pas avec BCB6. J'ai aussi entendu parler d'une
librairie chez boost, mais j'ai pas trouvé.


Surement dans le vault:
http://boost-consulting.com/vault/

Je ne l'ai jamais essayé.


Quelles sont les actions que vous mettez en log ds vos applis? Je sais déjà
que je vais logger les échanges avec une base de données, ainsi que les
échanges avec DirectX. Mais dans le code "normal", comment distinguer ce qui
vaut la peine de l'être?

J'imagine que c'est abusif de tout logger...


Généralement, je logge différemment quand je suis en mode debug ou en
mode release. En mode debug, je met des infos de tracage qui
n'apparaissent pas dans le mode release (assez verbose).

Maintentant, concernant quoi logger ? Bien évidement les erreurs (fatal
et recovered), pour une base de données je n'ai pas d'expérience mais je
suppose les opérations de log/delog de session, commit, rollback.

Enfin, comment déterminer lorsqu'une exception ou une assertion est lancée,
tout le parcours du code dans les diverses fonctions de l'appli, pour
permettre de remonter facilement à la source? (Un peu comme le fait le
debugger en somme)


Si l'exception ne te le dit pas, tu n'as pas moyen de le savoir car la
stack est dépilée. Le but est un bonne utilisation des try/catch comme
par exemple mettre des try aux frontières des modules utilisés et logger
l'exception reçue avant de la renvoyer plus haut si tu ne sais pas la
gérer de façon locale.

Ca peut être bien aussi de te faire un fichier qui spécifie comment tu
vas gérer les situation d'erreur (impossible d'écrire un fichier ...);
ca permet de savoir comment et à quel niveau les intercepter. Bon courage :)

Michael

Avatar
Alp Mestan
Si l'exception ne te le dit pas, tu n'as pas moyen de le savoir car la
stack est dépilée. Le but est un bonne utilisation des try/catch comme
par exemple mettre des try aux frontières des modules utilisés et log ger
l'exception reçue avant de la renvoyer plus haut si tu ne sais pas la
gérer de façon locale.

Ca peut être bien aussi de te faire un fichier qui spécifie comment tu
vas gérer les situation d'erreur (impossible d'écrire un fichier ...);
ca permet de savoir comment et à quel niveau les intercepter. Bon coura ge :)


Je me permettrais de rajouter que comme l'a dit Michael Doubez, il
s'agit de différencier à la fois le mode de compilation (Debug/
Release) et le niveau du log(tracking, warning, fatal error, ...). En
suivant ce fil directeur, en Debug bien sûr tu vas tout afficher dans
un fichier. En Release, je dirais qu'à la limite il y a les warnings,
mais sinon ne logger que les erreurs fatales et autres erreurs d'ordre
égal.

Pour résumer : tu peux et il est même conseillé de tout logger en
Debug. En Release tu dois limiter au strict minimum. Donc pas de
messages du genre "Connexion BDD : Ok" ou autres mais seulement les
erreurs importantes je pense. Enfin je procède ainsi.

Alp Mestan

Avatar
Michael
Ok, merci de tes conseils

Et c'est je pense à l'utilisation que je vais savoir quoi et quand logger les
choses qui me paraissent essentielles...

Sinon c'est bien dans le Vault que j'ai trouvé boost logger

Merci à tous les 2

Mike