![](/img/trans.png)
[英]Spring Boot & Thymeleaf - Best Way to Save a Search Form for subsequent calls
[英]What is the best way to log Activity in Spring Boot with Thymeleaf?
我想记录用户在我的Web服务上发出的请求。 用户登录后,用户可以针对服务器api发出请求。 我想记录哪个用户发出了哪个请求,输入和输出是什么,等等。
可以说用户通过将新对象提交到将要更新的服务器来编辑某些内容,我想知道是谁做的,之前是什么。
这是我目前使用的功能,但效果不是很好。
logging.level.org.thymeleaf=DEBUG
logging.level.org.springframework.boot=TRACE
我有一个主意是添加method(....,String Username),这样我就可以记录所有内容。 这是一个好主意,还是有更好的方法呢?
您可以通过启用以下属性来使用普通访问日志记录(Tomcat):
server.tomcat.access-log-enabled=true
这使您可以记录AccessLogValve文档中指定的任何内容。
您还可以编写自己的过滤器,例如:
@Component
@Ordered(Ordered.LOWEST_PRECEDENCE)
public class LogFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain)
throws ServletException, IOException {
// Log the info you need
// ...
filterChain.doFilter(request, response);
}
}
如果确保此过滤器在Spring Security过滤器链之后执行,则可以访问用户主体。 您还拥有HttpServletRequest
和HttpServletResponse
对象,这将允许您同时记录请求正文和响应正文,尽管我认为这将是非常昂贵的操作。
request.getServletPath()
记录路径 SecurityContextHolder.getContext().getAuthentication().getName()
。 只需通过更改顺序来确保您的安全过滤器已执行(有关更多信息,请参阅此问题 ) request.getReader()
并记录它来记录请求正文(有关更多信息, request.getReader()
问题 ) Writer
包装器并重写HttpServletResponse
来检索响应主体,以便它返回您的作家而不是默认作家(有关更多信息, HttpServletResponse
问题 )
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.