Add LogFilter for development

pull/137/head
johnniang 2019-03-04 17:51:15 +08:00
parent 7e267000bf
commit 69d1b1575e
2 changed files with 61 additions and 2 deletions

View File

@ -1,6 +1,7 @@
package cc.ryanc.halo.config;
import cc.ryanc.halo.filter.CorsFilter;
import cc.ryanc.halo.filter.LogFilter;
import cc.ryanc.halo.web.interceptor.ApiInterceptor;
import cc.ryanc.halo.web.interceptor.InstallInterceptor;
import cc.ryanc.halo.web.interceptor.LocaleInterceptor;
@ -14,7 +15,10 @@ import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.PropertySource;
import org.springframework.core.Ordered;
import org.springframework.web.servlet.LocaleResolver;
import org.springframework.web.servlet.config.annotation.*;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.i18n.LocaleChangeInterceptor;
import org.springframework.web.servlet.i18n.SessionLocaleResolver;
@ -108,13 +112,29 @@ public class WebMvcAutoConfiguration implements WebMvcConfigurer {
FilterRegistrationBean<CorsFilter> corsFilter() {
FilterRegistrationBean<CorsFilter> corsFilter = new FilterRegistrationBean<>();
corsFilter.setOrder(Ordered.HIGHEST_PRECEDENCE);
corsFilter.setOrder(Ordered.HIGHEST_PRECEDENCE + 10);
corsFilter.setFilter(new CorsFilter());
corsFilter.addUrlPatterns("/api/*");
return corsFilter;
}
/**
* Creates a LogFilter.
*
* @return Log filter registration bean
*/
@Bean
FilterRegistrationBean<LogFilter> logFilter() {
FilterRegistrationBean<LogFilter> logFilter = new FilterRegistrationBean<>();
logFilter.setOrder(Ordered.HIGHEST_PRECEDENCE + 9);
logFilter.setFilter(new LogFilter());
logFilter.addUrlPatterns("/api/*", "/admin/*");
return logFilter;
}
/**
*
*

View File

@ -0,0 +1,39 @@
package cc.ryanc.halo.filter;
import cc.ryanc.halo.logging.Logger;
import cn.hutool.extra.servlet.ServletUtil;
import org.springframework.web.filter.OncePerRequestFilter;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* Filter for logging.
*
* @author johnniang
*/
public class LogFilter extends OncePerRequestFilter {
private Logger logger = Logger.getLogger(getClass());
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
String remoteAddr = ServletUtil.getClientIP(request);
logger.debug("");
logger.debug("Starting url: [{}], method: [{}], ip: [{}]", request.getRequestURL(), request.getMethod(), remoteAddr);
// Set start time
long startTime = System.currentTimeMillis();
// Do filter
filterChain.doFilter(request, response);
logger.debug("Ending url: [{}], method: [{}], ip: [{}], status: [{}], usage: [{}] ms", request.getRequestURL(), request.getMethod(), remoteAddr, response.getStatus(), (System.currentTimeMillis() - startTime));
logger.debug("");
}
}