Skip to content
Snippets Groups Projects

feat: 시스템 로그 출력 및 저장

Merged 천 진강 requested to merge feat/log into dev
7 files
+ 153
115
Compare changes
  • Side-by-side
  • Inline

Files

 
package com.aolda.itda.config;
 
 
import jakarta.servlet.FilterChain;
 
import jakarta.servlet.ServletException;
 
import jakarta.servlet.http.HttpServletRequest;
 
import jakarta.servlet.http.HttpServletResponse;
 
import org.slf4j.Logger;
 
import org.slf4j.LoggerFactory;
 
import org.springframework.stereotype.Component;
 
import org.springframework.web.filter.OncePerRequestFilter;
 
import org.springframework.web.util.ContentCachingRequestWrapper;
 
 
import java.io.IOException;
 
 
@Component
 
public class LoggingFilter extends OncePerRequestFilter {
 
 
private static final Logger logger = LoggerFactory.getLogger(LoggingFilter.class);
 
 
@Override
 
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
 
throws ServletException, IOException {
 
 
// Request Body를 읽을 수 있도록 래핑
 
ContentCachingRequestWrapper cachingRequest = new ContentCachingRequestWrapper(request);
 
System.out.println("필터 적용");
 
filterChain.doFilter(cachingRequest, response);
 
 
// 로그 기록
 
logRequest(cachingRequest);
 
System.out.println("왜 안돼ㅐ");
 
}
 
 
private void logRequest(ContentCachingRequestWrapper request) {
 
System.out.println("되는거 맞아?");
 
String ip = request.getRemoteAddr();
 
String method = request.getMethod();
 
String uri = request.getRequestURI();
 
String queryString = request.getQueryString();
 
String body = getRequestBody(request);
 
 
logger.info("IP: {}, Method: {}, URI: {}, Query Params: {}, Request Body: {}",
 
ip, method, uri, (queryString != null ? queryString : "None"),
 
(!body.isEmpty() ? body : "None"));
 
}
 
 
private String getRequestBody(ContentCachingRequestWrapper request) {
 
byte[] buf = request.getContentAsByteArray();
 
return (buf.length > 0) ? new String(buf) : "";
 
}
 
}
Loading