我一直在尝试为我的spring-boot项目创建一个logback.xml日志记录模式,我可以在其中获得一些要求。
我想使用MDC以日志记录模式打印数据(例如process-id、request-id、特定 API 请求的用户请求数据、相同的用户响应等),但我找不到任何关于如何MDC的解决方案通信并插入所需的值。logback.xml
我是spring-boot和 Java 开发的新手;请给我一些解决方案或想法。
我一直在尝试为我的spring-boot项目创建一个logback.xml日志记录模式,我可以在其中获得一些要求。
我想使用MDC以日志记录模式打印数据(例如process-id、request-id、特定 API 请求的用户请求数据、相同的用户响应等),但我找不到任何关于如何MDC的解决方案通信并插入所需的值。logback.xml
我是spring-boot和 Java 开发的新手;请给我一些解决方案或想法。
嗨,我有一个解决方案,Apache-Log4j 给定一个类是 ThreadContext。在此类的帮助下,我们可以在 MDC 上下文中添加/删除数据。
请按照以下步骤操作:
请按照下面的代码。
import org.apache.logging.log4j.ThreadContext;
@Component
public class MyInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse
response, Object handler) {
RuntimeMXBean bean = ManagementFactory.getRuntimeMXBean();
long pid = Long.valueOf(bean.getName().split("@")[0]);
ThreadContext.put("process-id", pid);
ThreadContext.put("request-id", request.getParameter("requestid")); //etc.. add Something..
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
ThreadContext.put("response", "add here"); //etc.. response.getSomething
ThreadContext.clearMap(); //this remove all in the MDC
}
}
或者,
您也可以使用 ServletFilter 来代替它。
您可以使用 put 在 MDC 中添加值
MDC.put("process-id", "1");
然后您定义一个日志模式,将这些值与 %X 一起使用
%X{process-id}
例如,您可以在 application.properties 中定义模式:
logging.pattern.console=%-4r [%thread] %-5level %X{process-id} - msg%n
或者在 logback.xml
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<layout>
<Pattern>%-4r [%thread] %-5level %X{process-id} - msg%n</Pattern>
</layout>
</appender>