首页 > 编程语言 > 详细

logback-spring&traceId

时间:2021-03-28 17:32:44      阅读:132      评论:0      收藏:0      [点我收藏+]

 

     <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.8</version>
        </dependency>

logback-spring.xml 文件
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <include resource="org/springframework/boot/logging/logback/base.xml" />
    <property name="log.path" value="F:\\study\\log" />
    <property name="projectname" value="insurance-service" />

    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <target>System.out</target>
        <encoder charset="UTF-8">
            <pattern>%d [%thread] %-5p [%c] [%F:%L] [tracesss=%X{traceId}] - %msg%n</pattern>
        </encoder>
    </appender>

    <appender name="errorAppender" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <!-- 过滤日志 -->
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>ERROR</level>
        </filter>
        <file>${log.path}/error/errorAppender.log</file>
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/error/errorAppender.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} error [%thread] %level %logger{35} - %msg%n</pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <appender name="insurantFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>${log.path}/insurant/insurant.log</file>
        <Prudent>true</Prudent>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log.path}/insurant/insurant.%d{yyyy-MM-dd}.log</fileNamePattern>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} insurant [%thread] [%X{traceId}] %level [%c] [%F:%L] - %msg%n </pattern>
            <charset>UTF-8</charset>
        </encoder>
    </appender>

    <logger name="cn.com.xmh.controller.TestController" level="INFO">
        <appender-ref ref="insurantFile"/>
    </logger>

    <!--<logger name="org.apache"  level="INFO">-->
        <!--<appender-ref ref="baseFile" />-->
    <!--</logger>-->

    <!-- additivity="false"  若是additivity设为true,则子Logger不止会在自己的appender里输出,还会在root的logger的appender里输出-->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

</configuration>


lombok插件
@Controller
@RequestMapping("/cos")
@Slf4j
public class TestController {
  log.info("hello1*****************mytestlog");


traceId设置
public class LogMdcFilter implements Filter {
    private static final String UNIQUE_ID = "traceId";
    @Override
    public void init(FilterConfig filterConfig) {
        System.out.println("init**********filter************************************");
    }
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        System.out.println("doFilter**********filter************************************");
        boolean bInsertMDC = insertMDC();
        try {
            chain.doFilter(request, response);
        } finally {
            if(bInsertMDC) {
                MDC.remove(UNIQUE_ID);
            }
        }
    }

    @Override
    public void destroy() {
    }

    private boolean insertMDC() {
        UUID uuid = UUID.randomUUID();
        String uniqueId = uuid.toString().replace("-", "");
        MDC.put(UNIQUE_ID, uniqueId);
        return true;
    }
}

@Configuration
public class MyConfig extends WebMvcConfigurationSupport {
 @Bean
    public FilterRegistrationBean filterRegistrationBean() {

        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        LogMdcFilter filter = new LogMdcFilter();
        registrationBean.setFilter(filter);

        //设置过滤器拦截请求
        List<String> urls = new ArrayList<>();
        urls.add("/*");
        registrationBean.setUrlPatterns(urls);

        return registrationBean;
    }



异步任务traceId设置
@Aspect
@Component
public class LogMdcAspect {
    private static final String UNIQUE_ID = "traceId";
 
    @Pointcut("@annotation(org.springframework.scheduling.annotation.Async)")
    public void logPointCut() {
    }
 
    @Around("logPointCut()")
    public Object around(ProceedingJoinPoint point) throws Throwable {
        MDC.put(UNIQUE_ID, UUID.randomUUID().toString().replace("-",""));
        Object result = point.proceed();// 执行方法
        MDC.remove(UNIQUE_ID);
        return result;
    }
}

  

 

logback-spring&traceId

原文:https://www.cnblogs.com/xingminghui111/p/14589019.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!