1.创建Filter
public class TraceIdFilter implements Filter { private final String traceIdName="traceId"; @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { String traceId = UUID.randomUUID().toString().replace("-", ""); MDC.put(traceIdName, traceId); try { chain.doFilter(request, response); } finally { MDC.remove(traceIdName); } } }
2. 配置filter
@Bean public FilterRegistrationBean traceIdFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new TraceIdFilter()); registration.setName("traceIdFilter"); registration.setOrder(2); registration.addUrlPatterns("/*"); registration.setDispatcherTypes(DispatcherType.REQUEST, DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.ERROR); return registration; }
3. json traceId 接口返回:
@ControllerAdvice public class TraceIdAdvice implements ResponseBodyAdvice { @Override public boolean supports(MethodParameter returnType, Class converterType) { return true; } @Override public Object beforeBodyWrite(Object body, MethodParameter returnType, MediaType selectedContentType, Class selectedConverterType, ServerHttpRequest request, ServerHttpResponse response) { if(Map.class.isInstance(body)){ Map map = (Map)body; map.put("traceId",MDC.get("traceId")); } return body; } }
4. 日志配置:增加%X{traceId}
<pattern>[%-5level] %d{${DATETIME}} [%thread] [%X{traceId}] %logger{36} - %m%n</pattern>
相关推荐
3. **日志记录级别**:SLF4J提供了常见的日志级别,如TRACE、DEBUG、INFO、WARN、ERROR和OFF,这些级别可以根据需要动态调整,以适应不同环境下的日志需求。 4. **参数化日志**:SLF4J支持参数化的日志消息,可以...
SLF4J API的设计简洁且强大,它提供了丰富的日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL,以及对应的输出方法。此外,SLF4J还支持参数化日志,这使得日志语句更加清晰,提高了代码的可读性。例如,`...
4. **日志级别**:SLF4J和Log4j支持多种日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。根据环境和需求,可以设置不同级别的日志输出,以便在调试、生产等不同阶段收集合适的日志信息。 5. **MDC和NDC**:...
4. **日志级别**:SLF4J支持多种日志级别,包括`TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR`和`OFF`。这些级别允许你控制日志输出的详细程度,以满足不同场景的需求。 5. **日志参数化**:SLF4J提供了参数化的日志...
6. **扩展性**:SLF4J还提供了MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context)功能,这些是日志上下文相关的功能,可以帮助开发者在日志中添加额外的信息,比如线程ID、请求ID等,方便问题排查...
此外,SLF4J还支持MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context),这两个特性可以帮助开发者在日志中携带额外的上下文信息,如线程ID、请求ID等,这对于问题排查非常有帮助。 总的来说,SLF...
SLF4J(Simple Logging Facade for Java)是Java中一个简单日志 facade,它为各种日志框架,如log4j、java.util.logging、logback等,提供了一个统一的API。SLF4J 1.6.1是该库的一个特定版本,包含了对日志处理的一...
2. **日志级别**:SLF4J支持TRACE、DEBUG、INFO、WARN、ERROR、OFF等多种日志级别,可以根据需要调整。 3. **绑定日志实现**:在项目中,通过引入适当的日志实现库,如logback-classic,SLF4J会自动绑定到该实现。 ...
logback-classic 实现了 SLF4J API,因此你可以使用 SLF4J 的简洁接口进行日志记录,同时享受到 logback 的性能优势。此外,它还内置了对 Java Management Extensions (JMX) 的支持,允许通过 JMX 管理和监控日志...
- 在Spring配置文件中,声明对SLF4J的引用,如`<bean id="logger" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">`,并设置初始化方法和参数来获取Logger实例。 - 使用`@Autowired...
Java平台上有多种日志框架,如Java内置的日志API(java.util.logging)、Log4j、Logback、SLF4J(Simple Logging Facade for Java)等。这些框架各有特点,例如Java内置日志API简单易用,但功能相对有限;Log4j历史...
4. **解决日志组件冲突问题**:通过统一使用SLF4J作为日志接口,可以轻松解决项目中多个日志组件之间的冲突问题。 #### 引入必要的文件 在项目中,需要引入以下文件以支持日志记录功能: - Slf4j-api.jar - Slf4j...
`LoggerFactory.getLogger()`是Spring Boot集成的SLF4J(Simple Logging Facade for Java)框架提供的核心功能,用于获取与特定类关联的日志记录器。SLF4J作为一个抽象层,允许开发者在不修改代码的情况下切换到其他...
- SLF4J(Simple Logging Facade for Java)是一个抽象层,可以用来替换不同的日志实现,包括Log4j。 在实际项目中,理解和掌握Log4j的使用能极大地提升开发效率和问题排查能力。通过深入学习和实践,你可以更好地...
该项目为基于Java和HTML实现的OpenLinkLog日志链路跟踪拦截设计源码,包含111个文件,涵盖66个Java源文件...该设计通过拦截主流框架请求并添加traceId,利用slf4j的MDC功能将信息打印至日志,实现系统间日志链路跟踪。
Java平台上有多个流行的日志框架,如Java Util Logging (JUL)、Log4j、Logback和SLF4J。SLF4J(Simple Logging Facade for Java)是一个抽象层,允许用户在部署时选择合适的日志实现。Logback是SLF4J的推荐实现,而...
1. **使用SLF4J API**:在应用中使用SLF4J提供的API,而不是直接使用Log4j等日志框架的API。 2. **输出异常的完整信息**:记录异常时,确保包含完整的StackTrace信息。 3. **避免多次记录日志**:在记录异常信息时,...
3. SLF4J(Simple Logging Facade for Java):日志抽象层,允许开发者在运行时选择不同的日志实现。 4. Python的logging模块:Python标准库中的日志系统,可自定义日志级别、处理器和日志格式。 5. .NET Framework...
SLF4J提供了一个简单统一的API,用于各种日志框架,如log4j、JDK内置的日志系统等。 4. **logback-access**:与Servlet容器集成,提供与Apache的Commons Logging API类似的功能,主要用于web应用的日志记录。 **二...
由于 Logback 实现了 SLF4J 接口,所以可以与其他遵循 SLF4J 标准的日志库(如 Log4j 或 java.util.logging)互换,而无需更改代码。 总之,Logback 中文文档详尽地涵盖了日志记录的所有方面,无论你是初学者还是...