Pregunta

Tengo un wich aplicación Java se ejecuta en dos máquinas en un clúster y los dos se conecto a una base de datos MySQL. Todo funciona bien, pero me gustaría tener un campo adicional en el wich base de datos representa la IP donde las peticiones está viniendo.
He resuelto esto por tener dos archivos log4j.properties diferentes, pero creo que hay una manera mejor de hacerlo?

Esta es la línea en el archivo log4j.properties que es diferente en las máquinas:

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')

¿Hay algo para MySQL como connection_ip? O un marcador de posición en log4j, de modo que pudiera almacenar el IP allí desde la aplicación Java?

Saludos, Lukas

¿Fue útil?

Solución

He resuelto esto utilizando el Contexto de diagnóstico asignada de log4j. Cuando comienzo a la aplicación Java almaceno la IP con este comando.

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

Y ahora puedo usar el X% {} serverip como un marcador de posición en mi archivo 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')

Aquí es un excelente post sobre log4j con unos buenos ejemplos
http://onjava.com/pub/ a / onjava / 2002/08/07 / log4j.html? page = 3

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top