Question

J'ai une application Java Wich fonctionne sur deux machines dans un cluster et ils ont tous deux le journal pour une base de données de MySQL. Tout fonctionne très bien, mais je voudrais avoir un champ supplémentaire dans la base de données Wich représente l'IP où les demandes vient.
Je résolu ce problème en ayant deux fichiers log4j.properties différents, mais je suppose qu'il ya une plus belle façon de le faire?

Ceci est la ligne dans le fichier log4j.properties qui est différent sur les machines:

log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, message) VALUES ('%d{dd MMM yyyy HH:mm:ss,SSS}','%c','%p','10.20.30.40','%m')

Y at-il quelque chose pour MySQL comme connection_ip? Ou un espace réservé dans log4j, pour que je puisse stocker l'IP là-dedans de l'application Java?

Cheers, Lukas

Était-ce utile?

La solution

Je résolu ce problème en utilisant le contexte de diagnostic mappées de log4j. Lorsque je démarre l'application Java je stocke l'adresse IP avec cette commande.

MDC.put("serverIP", InetAddress.getLocalHost().getHostAddress());

Et maintenant, je peux utiliser le% {X} serverIP comme un espace réservé dans mon fichier log4j.properties.

log4j.appender.DB.sql=INSERT INTO log4j (date, category, priority, server, sessionID, message) VALUES ('%d{dd/MM/yyyy HH:mm:ss,SSS}','%c','%p','%X{serverIP}','%X{sessionID}','%m')

Voici un excellent post sur les log4j avec quelques bons exemples
http://onjava.com/pub/ a / onjava / 2002/08/07 / log4j.html? page = 3

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top