我正在创建一个简单的SpringMVC项目,并希望记录所有传入的请求,包括uri/query/payload/clientIp...,所有信息。
我能找到的所有资源都是关于Spring Boot的,例如:https://www.javadevjournal.com/spring/log-incoming-requests-spring/
我也阅读了官方文档,发现enableLoggingRequestDetails
选项,但没有关于它的细节,我尝试了,但没有工作. https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-logging
那么,如何在纯SpringMVC框架(没有Sping Boot )中实现这个呢?
有没有一个SpringMVC内置的方法来做这件事?
3条答案
按热度按时间hwamh0ep1#
1.您可以实现一个从OncePerRequestFilter扩展的Filter类,然后每个请求都将通过您的过滤器。然后您可以在该类中记录您想要的内容。
2.另一种方法是实现从HandlerInterceptorAdapter扩展的拦截器类。
但是您必须通过配置显式地添加这个拦截器来启用它。
3.还有一种方法是使用标准CommonsRequestLoggingFilter。
这样,您应该使用如下配置来配置它:
然后在logback.xml中启用它:
643ylb082#
为了在Spring应用程序中启用日志记录,您需要做的是
日志库及其属性文件
要使Log4j使用默认的JCL依赖项(commons-logging),您需要做的就是将Log4j放在类路径上,并为其提供一个配置文件(类路径根目录中的log4j.properties或log4j.xml)。
log4j.properties
参考Spring文件和样品project
l7wslrjt3#
使用拦截器你可以实现这个。检查下面的链接,你会得到一个想法
enter link description here
spring-mvc-handlerinterceptor
spring-mvc-4-how-to-intercept-request-with-a-handlerinterceptor
编辑:
使用公用请求日志记录过滤器
Spring MVC提供了CommonsRequestLoggingFilter,它可以记录请求URL、主体和其他相关信息。
CommonsRequestLoggingFilter
日志记录配置.java
日志记录.属性