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