sitelink1  
sitelink2  
sitelink3  
extra_vars4  
extra_vars5  
extra_vars6  
생성한 클래스는 ContextFileAppender 와 ContextRollingFileAppender 이다.
jar로 추가하기에는 너무나 초라한... ^^;
사용법은 log4j.properties 참조할 것

클라이언트 IP를 Appender에 넘겨주기 위해서 Servlet 시작시에 다음과 같은 코드를 삽입해야 한다.

 

try {   

    Class.forName("org.apache.log4j.MDC");   

    MDC.put("IP", request.getRemoteHost());   

catch (ClassNotFoundException ex) {   

    if (log.isWarnEnabled()) {   

        log.warn("클래스를 찾을 수 없습니다.", ex);   

    }   

}



OR


try {

//-- 요청된 원격 IP를 취한다

String ip = null;

Enumeration headers = request.getHeaders("X-FORWARDED-FOR");

if (headers != null) {

while (headers.hasMoreElements()) {

String[] ips = headers.nextElement().toString().split(",");

int count = ips.length;


for (int i = 0; i < count; i++) {

String proxy = ips[i].trim();


if (!"unknown".equals(proxy)

&& !(proxy == null || "".equals(proxy.trim()))) {

ip = proxy;

}

}

}

}

if (ip == null) {

ip = request.getRemoteAddr();

}

//-- MDC 영역에 IP 를 저장한다

Class[] parameterTypes = { String.class, Object.class };

Object[] args = { "IP", ip };

Class.forName("org.apache.log4j.MDC").getMethod("put", parameterTypes).invoke(null, args);


if (log.isDebugEnabled()) {

log.debug("registerLogContext(): ip=" + ip);

}

} catch (Throwable th) {

if (log.isDebugEnabled()) {

log.debug("Could not initialize Log4j");

}

}



MDC 영역에 클라이언트 IP를 삽입하는 구문이다.