如何识别和记录同步api请求?



我开发了一个Rest API与一些日志(请求,响应,更多信息和错误)

我看到,如果有并发请求,日志混合,你不能跟踪日志的执行,因为你不知道哪个请求被用于日志行。

是否可以在每个日志行开头添加任何执行id,以便我可以跟踪该请求的执行?

我使用Log4j

您可以使用属性%tid(线程id)和%tn(线程名称)来包含有关线程的信息。我将展示一个来自https://www.codingame.com/playgrounds/4497/configuring-logback-with-spring-boot:

的修改后的示例
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>
%d{dd-MM-yyyy HH:mm:ss.SSS} %tid %tn %magenta([%thread]) %highlight(%-5level) %logger{36}.%M - %msg%n
</pattern>
</encoder>
</appender>
<root level="info">
<appender-ref ref="STDOUT"/>
</root>

</configuration>

解决了,我要找的是一个请求ID,而不是线程ID。

public class LoginServide implements ServletRequestListener{
public void requestInitialized(ServletRequestEvent arg0){
MDC.put("RequestID", UUID.randomUUID());
}
public void requestDestroyed(){
MDC.clear(); 
}
}

. properties中

log4j.appender.app.layout.ConversionPattern= %X{RequestID} ...

现在我可以在每个日志行中看到requesttid,所以我可以跟踪它,即使同时请求的日志是混合的

最新更新