2009-12-02 3 views
1

Nous aimerions que les clients puissent contrôler les niveaux de journalisation dans notre fichier JAR client. Quelle est la meilleure façon de procéder?Comment contrôler le niveau de journalisation dans la bibliothèque cliente?

Actuellement, nous n'avons qu'une poignée d'instructions de journalisation qui écrivent dans System.out. Je me rends compte que l'utilisation de Log4J permettrait de résoudre ce problème, même si l'un de nos plus gros clients n'utilise pas Log4J et utilise leur propre implémentation de journalisation personnalisée. Y a-t-il une approche propre pour les laisser contrôler la journalisation dans notre pot de client? Options auxquelles nous avons pensé: les clients pouvaient définir explicitement des propriétés sur les classes jar client pour définir le niveau de journalisation (n'aime pas ça), notre client jar pouvait lire un fichier optionnel .properties que les clients pouvaient placer sur leur classpath (mieux mais encore un peu de douleur).

Répondre

5

N'utilisez pas de structure de journalisation concrète, utilisez SLF4J, de sorte que vous puissiez échanger la journalisation si nécessaire. Je commencerais d'abord par convertir votre propre System.out en java.util.logging inclus. C'est assez simple et pratique pour la plupart des besoins.

Si votre client utilise un autre cadre de journalisation, il existe un pont vers slf4j ou vous pouvez écrire le vôtre.

EDIT: Nous l'avons utilisé pour rationaliser la journalisation des bibliothèques externes qui utilisaient LOG4J dans java.util.loogging que nous utilisons.

2

Jetez un coup d'œil à Apache commons-logging. Il fournit une couche d'isolation fine qui peut permettre à votre code d'utiliser une API cohérente, puis de connecter un enregistreur de couche inférieure (y compris Log4J ou un autre).

+0

Je recommanderais slf4j sur la journalisation des communs. – notnoop

+0

Je ne suis pas familier avec ça. Je suppose que je vais le chercher. –

+0

Je recommande également slf4j sur la journalisation des communs. La journalisation des communs peut entraîner des problèmes de classloader: http://articles.qos.ch/classloader.html – Sylar

Questions connexes