我需要使我的日志(log4j引擎)更具信息性,每个请求对Spring-Boot应用程序中的REST API都具有唯一的ID。
我想避免使用具有requestId字段并从其扩展的超类。
我试图在网络上寻找一个很好的例子,但是并不清楚。
我可以使用任何最佳实践吗?
答案 0 :(得分:0)
乍一看,在集成测试中使用这种功能只会引起问题。
理想情况下,只需遵循SRP原理,并将生成逻辑包含在专用类中,就可以使可注入@Component
.. MyIdGenerator
等。
您可能有一个同步方法generateId()
。
现在,您可以在需要的任何控制器中使用它,也可以更轻松地设置集成测试并对其进行更多控制。
更新:
如果这是一项全球战略,您还可以利用HandleInterceptorAdapter
:
@Component
public class RequestInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
/* generate unique id here and log what is needed */
}
您可以将ID生成和日志记录封装在此类中。
答案 1 :(得分:0)
有以下几种最佳做法: