문제

클러스터의 두 기계에서 실행되는 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')

Connection_IP와 같은 MySQL에 대한 것이 있습니까? 아니면 Java 응용 프로그램에서 IP를 저장할 수 있도록 Log4J의 자리 표시자가 있습니까?

건배, 루카스

도움이 되었습니까?

해결책

Log4J의 매핑 된 진단 컨텍스트를 사용하여 이것을 해결했습니다. Java 응용 프로그램을 시작하면이 명령과 함께 IP를 저장합니다.

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

이제 log4j.properties 파일에서 %x {serverip}를 자리 표시 자로 사용할 수 있습니다.

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