sitelink1 | |
---|---|
sitelink2 | |
sitelink3 | |
extra_vars4 | |
extra_vars5 | |
extra_vars6 |
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를 삽입하는 구문이다.