88 votes

Expérience d'utilisation de la bibliothèque de journalisation Boost.Log ?

Je envisage de commencer à utiliser la bibliothèque de journalisation Boost.Log. Est-ce que quelqu'un utilise Boost.Log? Veuillez partager vos expériences à ce sujet.

Les autres bibliothèques que je considère sont Apache log4cxx (il semble fastidieux à installer mais mes coéquipiers veulent quelque chose de simple pour commencer) et Pantheios (le même problème car il fonctionne avec des frontaux et arrière extra).

41voto

Oskar N. Points 2124

MISE À JOUR: Depuis la rédaction de ce texte, j'ai remplacé Boost.Log par mon propre système de journalisation personnalisé, principalement parce que j'ai décidé de me débarrasser de toutes les dépendances à Boost dans tous mes projets pour diverses raisons. Si vous êtes à l'aise avec l'utilisation de Boost, je suppose que Boost.Log reste un choix valable, à en juger par la réponse de Klaim.

Mon expérience avec Boost.Log en 2010 suit.


J'ai intégré avec succès Boost.Log dans mon moteur de jeu et je ne peux en dire que du bien. Bien sûr, il est un peu tôt pour l'utiliser, car la version 2 sera la version effective qui deviendra la version officielle de Boost.Log.

Sachez que la version "1.0" disponible n'est pas entretenue. Pour recevoir des mises à jour, vous devez utiliser la version de développement (trunk) qui peut devenir instable. Prenez cela en compte si vous envisagez d'utiliser cette version dans des projets sérieux. Si vous n'avez pas peur d'utiliser des versions de développement ou de futurs changements, alors foncez. C'est vraiment agréable à utiliser tel quel dans son état actuel.

J'ai longtemps pensé que le système de journalisation hiérarchique de log4j/log4cxx était supérieur, mais Boost.Log m'a fait changer d'avis. Le filtrage et les attributs sont bien plus flexibles.

La conception des sorties séparées par frontend/backend facilite vraiment l'ajout de backends supplémentaires. Plus besoin de se soucier des problèmes de synchronisation ou de filtrage, car cela est géré par le frontend. La bibliothèque est également fournie avec de nombreux backends déjà disponibles, pour les fichiers rotatifs, la console, syslog, le registre d'événements Windows, etc.

J'ai écrit mes propres backends de sortie ; l'un va vers la console du jeu et l'autre vers une sorte de système de notification pour les événements plus sérieux. C'était plus facile que je ne le pensais, je l'ai mis en place en quelques minutes seulement.

Enfin, le mainteneur/développeur est vraiment serviable également. Vous obtiendrez beaucoup d'aide sur les forums du projet. Il a corrigé deux bugs (dont un majeur) ce week-end que j'ai signalés :-)

21voto

Klaim Points 24511

MISE À JOUR: J'utilise Boost.Log dans un système de moteur de jeu et j'en suis très satisfait. C'est rapide, thread-safe et très flexible lorsque vous en avez besoin.

Boost.Log devrait être fourni avec toutes les bibliothèques Boost dans une prochaine version cette année (2013).


Boost.Log est conçu pour mettre en place un système de journalisation dessus. Si vous lisez la documentation, vous verrez qu'il est si flexible que n'importe quel système de journalisation auquel vous pouvez penser peut être construit avec (comme la journalisation sur un ordinateur distant).

Ainsi, il existe des macros pour faciliter l'utilisation dans des projets simples mais je pense que c'est le genre de bibliothèque qui est surtout utile aux personnes qui comprennent vraiment la journalisation et qui veulent construire une architecture spécifique pour leur application.

En ce qui concerne les performances, je me souviens qu'il y avait des problèmes lors de la soumission qui le rendaient lent par rapport à d'autres bibliothèques de journalisation (moins flexibles) mais comme c'était un brouillon et que la première version n'est pas encore sortie, je ne m'en préoccuperais pas si vous ne codez pas une application critique en termes de temps.

En fin de compte, je pense que c'est tout simplement trop "nouveau" pour être évalué "maintenant". Il n'y a pas d'autre bibliothèque de journalisation aussi flexible que celle-ci et je ne suis pas sûr que beaucoup de personnes sentiront le besoin de l'utiliser.

Mise à jour : un échange d'e-mails récent avec l'auteur de Boost.Log a donné des données qui suggèrent que Boost.Log est clairement une excellente alternative pour une journalisation rapide.

7voto

Mic Points 1318

Récemment, j'ai examiné la mise en place d'un système de journalisation sur un projet que je commençais.

J'ai essayé log4cxx comme vous l'avez mentionné, il est en effet très fastidieux à installer. Il m'a fallu plusieurs heures pour le faire compiler sous VS2012 (avec d'autres bibliothèques de dépendance...), et ensuite il a tout simplement planté quand je l'ai utilisé dans mon projet. Certainement quelques trucs bizarres se passent avec des incompatibilités de bibliothèques standard, mais je n'ai pas pu comprendre.

Alors, je suis passé à log4cpp que j'ai fait fonctionner en quelques minutes seulement. Je le trouve élégant et léger, juste ce dont j'avais besoin. Il a l'avantage majeur d'avoir les mêmes fonctionnalités que les systèmes de journalisation bien connus log4j & co., ce qui pourrait être un réel avantage pour votre travail d'équipe (configuration via un fichier de configuration, etc.)

En ce qui concerne les performances, il faut un appel de fonction pour vérifier si le journal est actif pour le niveau du message, puis un appel de fonction pour enregistrer réellement les données.

Avec quelques macros faites maison (pour ajouter LINE & co. aux messages), log4cpp s'est avéré vraiment utile dans mon projet.

Malheureusement, je n'ai pas essayé Boost.Log donc je ne peux pas en parler, mais j'espère que ce retour d'expérience vous sera quand même utile si vous choisissez de ne pas utiliser Boost.Log.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X