2010-12-19 1 views
2

J'ai une application serveur multithread que j'écris en C++ et j'ai besoin de mettre en œuvre un système de journalisation efficace. Par efficace, je veux dire que quelle que soit la quantité d'enregistrement est configuré, l'application ne devrait jamais s'arrêter. Donc, de préférence, il y a un thread qui est dédié à l'écriture de ses fichiers journaux. Je veux enregistrer chaque demande que le composant serveur gère dans son propre fichier, avec un système de rotation qui supprime les fichiers plus anciens que certains seuils. Une requête est gérée par 2 threads, un qui fait un travail de conversion et un thread-worker faisant partie du pool de threads (BOOST threadpool) qui fait toutes les autres actions (base de données, calculs, etc). Donc la journalisation doit être threadsafe et je dois pouvoir la configurer pour les niveaux et laisser chaque instance de classe Logger (mon propre logger qui implémente une bibliothèque) accepter un nouveau nom de fichier. Ainsi, chaque nouvelle instance de Logger est créée pour une requête spécifique.Enregistrement d'un composant de serveur multi = thread

Ma question ultime est: Quelle bibliothèque de journalisation me permet d'avoir un nouveau fichier journal pour chaque requête et me permet de configurer les niveaux de journal? (IE: erreur, avertissement, critique, etc)

Ou devrais-je tout implémenter moi-même? (pas de journalisation n'est pas une option)

J'ai regardé Boost :: Logging v2 et puisque l'objet de l'enregistreur principal, qui contient tout l'état (niveaux, fichiers) est global, je ne peux pas changer les fichiers pour chaque requête.

J'ai regardé templog.org et je ne peux même pas compiler. Peu importe ce que j'inclus ou quelles références je définis, il ne peut jamais trouver l'espace de noms templog ou aucune de ses classes.

Répondre

2

Regardez Apache log4cxx. C'est une excellente bibliothèque de journalisation!

+0

C'est une bibliothèque de journaux .NET, je suis après les bibliothèques C++ –

+0

Il existe bien pour .net mais aussi pour Java, C++ et PHP. Regardez mieux ;-) – VdesmedT

+0

J'ai renommé votre lien vers log4cxx au lieu de log4net. Je suis d'accord, c'est une super bibliothèque. Je l'ai utilisé dans plusieurs projets. –