要在Spring Boot中自动将Vue提交的URL写入日志,你可以使用Spring的HandlerInterceptor
来拦截HTTP请求,并记录URL。下面是一个简单的实现示例:
1. 创建一个HandlerInterceptor
来拦截请求
首先,创建一个拦截器类,它会在每次请求时记录请求的URL。
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@Component
public class LoggingInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
// 获取请求的URL
String requestUrl = request.getRequestURL().toString();
// 记录URL到日志
System.out.println("Received request for URL: " + requestUrl);
// 继续执行请求
return true;
}
}
2. 配置拦截器
然后你需要将这个拦截器注册到Spring的拦截器链中。可以通过实现WebMvcConfigurer
来完成。
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Autowired
private LoggingInterceptor loggingInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
// 注册拦截器并指定拦截所有路径
registry.addInterceptor(loggingInterceptor).addPathPatterns("/**");
}
}
3. 在Vue中发起请求
在Vue项目中,假设你使用axios
来发起HTTP请求:
axios.post('/api/some-endpoint', data)
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error(error);
});
每次你通过Vue发起请求,Spring Boot的LoggingInterceptor
都会拦截并将请求的URL打印到日志中。
4. 使用日志框架
如果你希望使用日志框架(如slf4j
)而不是System.out.println
来记录日志,你可以将拦截器中的日志记录替换为:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@Component
public class LoggingInterceptor implements HandlerInterceptor {
private static final Logger logger = LoggerFactory.getLogger(LoggingInterceptor.class);
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String requestUrl = request.getRequestURL().toString();
logger.info("Received request for URL: " + requestUrl);
return true;
}
}
这将通过slf4j
记录日志,日志的输出格式和存储位置可以通过Spring Boot的application.properties
或application.yml
文件配置。