Domanda

Ho un'applicazione Java wich gira su due macchine in un cluster ed entrambi registro per un database mysql. Tutto funziona benissimo, ma vorrei avere un campo aggiuntivo nel wich banca dati rappresenta il IP in cui le richieste proviene.
Ho risolto questo avendo due file log4j.properties diversi, ma credo che ci sia un modo migliore per farlo?

Questa è la riga nel file log4j.properties che è diverso sulle macchine:

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

C'è qualcosa per MySQL come connection_ip? O un segnaposto in log4j, in modo da poter memorizzare l'IP in là dall'applicazione Java?

Saluti, Lukas

È stato utile?

Soluzione

Ho risolto questo utilizzando il contesto diagnostico mappato di log4j. Quando avvio l'applicazione Java posso conservare l'IP con questo comando.

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

E ora posso usare il% X {} serverIP come segnaposto nel mio file 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')

Ecco un eccellente post su log4j con alcuni buoni esempi
http://onjava.com/pub/ un / onjava / 2002/08/07 / log4j.html? page = 3

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top