Вопрос

У меня есть приложение Java, которое работает на двух машинах в кластере, и оба они регистрируются в одной базе данных MySQL.Все работает нормально, но мне хотелось бы иметь в базе данных дополнительное поле, обозначающее IP-адрес, с которого поступают запросы.
Я решил эту проблему, создав два разных файла log4j.properties, но думаю, есть более приятный способ сделать это?

Эта строка в файле log4j.properties отличается на разных машинах:

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

Есть ли что-нибудь для MySQL, например Connection_IP?Или заполнитель в log4j, чтобы я мог сохранить там IP-адрес из приложения Java?

Приветствую, Лукас

Это было полезно?

Решение

Я решил эту проблему, используя сопоставленный диагностический контекст log4j.Когда я запускаю приложение Java, я сохраняю IP-адрес с помощью этой команды.

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

И теперь я могу использовать %X{serverIP} в качестве заполнителя в моем файле 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')

Вот отличный пост о log4j с несколькими хорошими примерами.
http://onjava.com/pub/a/onjava/2002/08/07/log4j.html?page=3

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top