There seem to be plenty of examples on how to log those using filters, so you can inject a repository into one and have it save instead of logging.
Edit - sorry, failed to include chain.doFilter(request, response);
//Filter
@Component
public class RequestResponseLoggingFilter implements Filter {
private final Logger LOGGER = LoggerFactory.getLogger(Application.class);
//Inject repo here
@Override
public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain chain) throws IOException, ServletException {
HttpServletRequest req = (HttpServletRequest) request;
HttpServletResponse res = (HttpServletResponse) response;
//Read data from req and res, save to repo
LOGGER.info("Logged : " + req.getRequestURI());
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {}
@Override
public void destroy() {}
}
@Bean
public FilterRegistrationBean<RequestResponseLoggingFilter> loggingFilter(){
FilterRegistrationBean<RequestResponseLoggingFilter> registrationBean
= new FilterRegistrationBean<>();
registrationBean.setFilter(new RequestResponseLoggingFilter());
registrationBean.addUrlPatterns("/**");
return registrationBean;
}
Unable to autowire the service inside my authentication filter in Spring is something you'll probably need.