gpt4 book ai didi

java - 如何为@RestController 启用日志记录?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:21:23 26 4
gpt4 key购买 nike

如何在使用 Spring 编写的 REST 服务上自动记录任何传入的 GET url 请求?

@RestController
public class MyRest {
@RequestMapping(method = RequestMethod.GET,
produces = MediaType.APPLICATION_XML_VALUE)
@ResponseBody
public ComplexRsp test() {
//...
}
}

我已经将 cxf 用于 soap,其中日志记录与使用 @InInterceptors、@OutInterceptors 注释 web 服务一样简单。

Spring 有没有类似的东西可以休息?

最佳答案

如果您使用 spring security,您可以只启用 log4j org.springframework.security,但它非常冗长:

<category name="org.springframework.security">
<priority value="ALL" />
</category>

或者你可以实现一个拦截器:

public class LoggerInterceptor extends HandlerInterceptorAdapter {    
private static final Logger logger = LoggerFactory.getLogger(LoggerInterceptor.class);

@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
logger.info("pre hangle URI: " + request.getRequestURI());

return super.preHandle(request, response, handler);
}

@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
logger.info("post hangle URI: " + request.getRequestURI());

super.afterCompletion(request, response, handler, ex);
}
}

applicationContext.xml

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="com.mycompany.LoggerInterceptor"></bean>
</mvc:interceptor>
</mvc:interceptors>

关于java - 如何为@RestController 启用日志记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28634108/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com