`

slf4j 日志增加traceId

 
阅读更多

 

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>

 

 

 

分享到:
评论

相关推荐

    最新的slf4j-1.7.6

    3. **日志记录级别**:SLF4J提供了常见的日志级别,如TRACE、DEBUG、INFO、WARN、ERROR和OFF,这些级别可以根据需要动态调整,以适应不同环境下的日志需求。 4. **参数化日志**:SLF4J支持参数化的日志消息,可以...

    slf4j-1.7.5.zip

    SLF4J API的设计简洁且强大,它提供了丰富的日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL,以及对应的输出方法。此外,SLF4J还支持参数化日志,这使得日志语句更加清晰,提高了代码的可读性。例如,`...

    slf4j结合log4j的demo,带配置文件

    4. **日志级别**:SLF4J和Log4j支持多种日志级别,包括TRACE、DEBUG、INFO、WARN、ERROR和FATAL。根据环境和需求,可以设置不同级别的日志输出,以便在调试、生产等不同阶段收集合适的日志信息。 5. **MDC和NDC**:...

    slf4j.api-1.6.1.jar

    4. **日志级别**:SLF4J支持多种日志级别,包括`TRACE`、`DEBUG`、`INFO`、`WARN`、`ERROR`和`OFF`。这些级别允许你控制日志输出的详细程度,以满足不同场景的需求。 5. **日志参数化**:SLF4J提供了参数化的日志...

    slf4j-1.5.11 jar包,源文件

    6. **扩展性**:SLF4J还提供了MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context)功能,这些是日志上下文相关的功能,可以帮助开发者在日志中添加额外的信息,比如线程ID、请求ID等,方便问题排查...

    slf4j.jar.zip

    此外,SLF4J还支持MDC(Mapped Diagnostic Context)和NDC(Nested Diagnostic Context),这两个特性可以帮助开发者在日志中携带额外的上下文信息,如线程ID、请求ID等,这对于问题排查非常有帮助。 总的来说,SLF...

    slf4j-1.6.1

    SLF4J(Simple Logging Facade for Java)是Java中一个简单日志 facade,它为各种日志框架,如log4j、java.util.logging、logback等,提供了一个统一的API。SLF4J 1.6.1是该库的一个特定版本,包含了对日志处理的一...

    hibernate-annotations和slf4j

    2. **日志级别**:SLF4J支持TRACE、DEBUG、INFO、WARN、ERROR、OFF等多种日志级别,可以根据需要调整。 3. **绑定日志实现**:在项目中,通过引入适当的日志实现库,如logback-classic,SLF4J会自动绑定到该实现。 ...

    logback学习的jar包免费分享,分别包括classic1.2.3、core1.2.3、slf4j-api 1.7.26

    logback-classic 实现了 SLF4J API,因此你可以使用 SLF4J 的简洁接口进行日志记录,同时享受到 logback 的性能优势。此外,它还内置了对 Java Management Extensions (JMX) 的支持,允许通过 JMX 管理和监控日志...

    spring-cxf 日志记录配置.zip

    - 在Spring配置文件中,声明对SLF4J的引用,如`&lt;bean id="logger" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"&gt;`,并设置初始化方法和参数来获取Logger实例。 - 使用`@Autowired...

    资料-Java日志.zip

    Java平台上有多种日志框架,如Java内置的日志API(java.util.logging)、Log4j、Logback、SLF4J(Simple Logging Facade for Java)等。这些框架各有特点,例如Java内置日志API简单易用,但功能相对有限;Log4j历史...

    系统程序Log日志编码规范

    4. **解决日志组件冲突问题**:通过统一使用SLF4J作为日志接口,可以轻松解决项目中多个日志组件之间的冲突问题。 #### 引入必要的文件 在项目中,需要引入以下文件以支持日志记录功能: - Slf4j-api.jar - Slf4j...

    如何使用LoggerFactory.getLogger在Spring Boot中输出日志(2)

    `LoggerFactory.getLogger()`是Spring Boot集成的SLF4J(Simple Logging Facade for Java)框架提供的核心功能,用于获取与特定类关联的日志记录器。SLF4J作为一个抽象层,允许开发者在不修改代码的情况下切换到其他...

    Log4j详解与实战

    - SLF4J(Simple Logging Facade for Java)是一个抽象层,可以用来替换不同的日志实现,包括Log4j。 在实际项目中,理解和掌握Log4j的使用能极大地提升开发效率和问题排查能力。通过深入学习和实践,你可以更好地...

    基于Java和HTML的OpenLinkLog日志链路跟踪拦截设计源码

    该项目为基于Java和HTML实现的OpenLinkLog日志链路跟踪拦截设计源码,包含111个文件,涵盖66个Java源文件...该设计通过拦截主流框架请求并添加traceId,利用slf4j的MDC功能将信息打印至日志,实现系统间日志链路跟踪。

    日志myLogApp日志记录项目

    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...

    Java异常日志捕获jar包logback

    SLF4J提供了一个简单统一的API,用于各种日志框架,如log4j、JDK内置的日志系统等。 4. **logback-access**:与Servlet容器集成,提供与Apache的Commons Logging API类似的功能,主要用于web应用的日志记录。 **二...

    Logback中文文档

    由于 Logback 实现了 SLF4J 接口,所以可以与其他遵循 SLF4J 标准的日志库(如 Log4j 或 java.util.logging)互换,而无需更改代码。 总之,Logback 中文文档详尽地涵盖了日志记录的所有方面,无论你是初学者还是...

Global site tag (gtag.js) - Google Analytics