87 votes

Comment envoyer java.util.la journalisation à log4j?

J'ai une application existante qui ne tous les de son la journalisation à l'encontre de log4j. Nous utilisons un certain nombre d'autres bibliothèques qui soit également utiliser log4j, ou journal contre Commons Logging, qui finit par l'utilisation de log4j sous les couvertures dans notre environnement. L'un de nos dépendances, même les journaux contre slf4j, qui fonctionne aussi très bien, car il finit par les délégués de log4j.

Maintenant, je voudrais ajouter ehcache à cette application pour certains besoins de mise en cache. Les versions précédentes de ehcache utilisé commons-logging, qui aurait fonctionné parfaitement dans ce scénario, mais à partir de la version 1.6-beta1 ils ont enlevé la dépendance sur commons-logging et l'a remplacé avec java.util.la journalisation de la place.

Ils n'ont pas vraiment familier avec le haut-JDK enregistrement disponible avec java.util.la journalisation, est-il un moyen facile d'avoir un journal des messages envoyés à des JUIL connecté à l'encontre de log4j, si je peux utiliser ma configuration existante et mis en place pour toute la journalisation en provenance de ehcache?

En regardant la documentation javadoc pour JUILLET, on dirait que je pourrait mettre en place un groupe de variables d'environnement pour changer de LogManager mise en œuvre est utilisée, et peut-être l'utiliser pour envelopper log4j Loggers dans l'JUIL - Logger classe. Est-ce la bonne démarche?

Un peu ironique que l'un de la bibliothèque de l'utilisation de la journalisation JDK serait la cause d'une telle migraine lorsque (la plupart de) le reste du monde est à l'aide de la 3e partie des bibliothèques de la place.

38voto

overthink Points 9471

Une approche que j'ai utilisée avec succès est d'utiliser slf4j que mon la primaire API de journalisation. J'ai ensuite slf4j lier à log4j. 3ème partie des dépendances avec d'autres frameworks (comme JUL) peut être comblé à slf4j.

19voto

Jim Ferrans Points 13673

Nous utilisons SLF4J sur notre projet en cours, et c'est très bien fonctionné pour nous. SLF4J est écrit par Ceki Gülcü, le créateur de Log4J, et il a fait un très bon travail. Dans notre code, nous utilisons la SLF4J la journalisation de l'Api directement, et nous configurer SLF4J, de sorte que les appels de la Jakarta Commons Logging (JCL), java.util.d'enregistrement (JUL), et Log4J Api sont tous relayés à l'SLF4J Api. Nous devons le faire parce que comme vous, nous utilisons des tiers (open source), les bibliothèques qui ont choisi de journalisation différentes Api.

Sur le bas de SLF4J, vous le configurer pour utiliser l'enregistreur de mise en œuvre. Il est livré avec un interne, ou "simple" logger, et vous pouvez la remplacer avec Log4J, JUL, ou Logback. La Configuration se fait simplement en les déposant dans les différents fichiers jar dans le classpath.

À l'origine, nous avons utilisé le Logback mise en œuvre, également écrit par Ceki Gülcü. C'est très puissant. Cependant, nous avons donc décidé de déployer notre application Glassfish serveur d'application Java EE, dont le journal spectateur s'attend JUIL-messages formatés. Donc, aujourd'hui, je suis passé de Logback à JUILLET, et en quelques minutes, j'ai remplacé deux Logback pots avec un SLF4J pot qui le relie à la mise en œuvre JUIL.

Donc, comme @overthink, je recommande chaudement à l'aide de SLF4J dans votre installation.

16voto

Emmanuel Bourg Points 4555

Il y a une solution plus simple que de SLF4J à pont JUL avec log4j, voir http://people.apache.org/~psmith/logging.apache.org/sandbox/jul-log4j-bridge/examples.html

Vous avez juste à mettre l'juil-log4j-pont sur le chemin de classe et d'ajouter un système de propriété:

-Djava.util.logging.manager=org.apache.logging.julbridge.JULBridgeLogManager

3voto

araqnid Points 33350

Le slf4j site je crois, a un pont pour le passage de java.util.la journalisation des événements par l'intermédiaire de slf4j (et donc à log4j).

Oui, le SLF4J téléchargement contient juil-à-slf4j qui, je crois, c'est juste que. Il contient un JUIL gestionnaire de transmettre les dossiers à SLF4J.

2voto

Joshua Davis Points 1616

@Yishai - Merci de poster le lien de mon wiki. L'exemple il y a des redirections JUIL à Log4J et j'ai eu en cours d'exécution dans un système de production depuis quelques années. JBoss 5.x déjà redirige JUIL à Log4J, donc je l'ai pris quand nous avons mis à niveau. J'ai une nouvelle qui redirige vers la SLF4J, que j'utilise sur quelques choses maintenant. Je vais la poster quand j'ai une chance.

Cependant, SLF4J a déjà:

http://mvnrepository.com/artifact/org.slf4j/jul-to-slf4j

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