CustomFilter.java

package io.hsquare.hds.core.security.filter;

import io.hsquare.hds.core.security.filter.support.HdsAuthorizationStrategy;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.filter.GenericFilterBean;

import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.TimeZone;

import static io.hsquare.hds.core.security.filter.support.HdsUriCheckerUtil.isCheck;

@Slf4j
public class CustomFilter extends GenericFilterBean {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {

        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        simpleDateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));

        String url = null;
        String start = null;
        String end = null;

        if (request instanceof HttpServletRequest) {

            HttpServletRequest http = (HttpServletRequest) request;

            url = http.getRequestURI();
            start = simpleDateFormat.format(new Date());
            int contentSize = http.getContentLength();

            if (isCheck(((HttpServletRequest) request))) {

                log.info("[Request] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}\\" :::: ContentSize -> \\"{}\\"", url, start, contentSize);

            }

        }

        chain.doFilter(request, response);

        if (response instanceof HttpServletResponse) {

            HttpServletResponse http = (HttpServletResponse) response;

            end = simpleDateFormat.format(new Date());
            int contentSize = http.getBufferSize();
            log.info("[Response] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}\\" :::: ContentSize -> \\"{}\\"", url, end, contentSize);

        }

        try {
            long duration = (simpleDateFormat.parse(end).getTime() - simpleDateFormat.parse(start).getTime()) / 1000;
            log.info("[Duration] URL -> \\"{}\\" :::: Time (UTC time) -> \\"{}초\\"", url, duration);
        } catch (ParseException e) {
            e.printStackTrace();
        }

    }

}

SecurityConfig.java

@Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .addFilterBefore(new CustomFilter(), BasicAuthenticationFilter.class);
    }