日志Id生成追踪方案

日志Id生成追踪方案

背景

新接手的项目是一个老项目。
最可怕的是当时开发的人非常有个性:

  1. 一个Map传一天
  2. 不喜欢打印日志
  3. 也不写注释

我。。。
可是我也是混个饭吃。
线上出了问题,总会反馈我这里,定位日志问题,眼睛贼累,于是就搞了一个这个东西。
为的就是定位一个完整请求方便,更多是为了,通过日志了解下前任的业务思路。

目标

早点下班吃饭!

开发配置

创建创建唯一日志ID过滤器,注册服务

public class Log4jMDCFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
		throws IOException, ServletException {
 
	try {
		HttpServletRequest request = (HttpServletRequest) req;
		//jk-web层直接生成
		//jk-service层,从request参数中获取tranceLog参数,使用jk-web生成的日志ID/没有就自动生成
		MDC.put("tranceLog", TraceLogUtil.getLogStr);
		HttpSession session = request.getSession();
		//插入一条系统日志
		chain.doFilter(request, resp);
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} finally {
		MDC.clear();//防止内存溢出。要实时清空
	}
}
 
@Override
public void init(FilterConfig arg0) throws ServletException {
	// TODO Auto-generated method stub
 
}
 
@Override
public void destroy() {
	// TODO Auto-generated method stub
	
}
}

注册服务

在类WebConfig.class中注册服务

 @Bean
    public FilterRegistrationBean filterRegistrationBean() {
        FilterRegistrationBean registrationBean = new FilterRegistrationBean();
        CharsetFilter charsetFilter = new CharsetFilter();
        registrationBean.setFilter(charsetFilter);
        registrationBean.setFilter(log4jMDCFilter);
        List<String> urlPatterns = new ArrayList<String>();
        urlPatterns.add("/*");
        registrationBean.setUrlPatterns(urlPatterns);
        return registrationBean;
    }

logback配置,优化打印日志

    <property name="PATTERN" value="%yellow(%-12(%d{HH:mm:ss.SSS})) |-%highlight(%-5level) [%thread] %X{tranctLog} %cyan(%logger{16} [%L]) -| %msg%n"/>

打印示例

蓝色为日志ID打印

红色为缩写类路径

10:49:32.008 |-INFO [main] 58d00fb7-7322-4c5b-08d8-edf7231b7398 c.j.c.o.OkHttpUtil [179] -| 请求失败----------------url:http://127.0.0.1:8766/merchant/queryCurrentBuyService,参数:{merchantId=100081, tranctLog=58d00fb7-7322-4c5b-08d8-edf7231b7398}
10:49:32.011 |-ERROR [main] 58d00fb7-7322-4c5b-08d8-edf7231b7398 c.j.c.o.OkHttpUtil [180] -| 请求失败----------------

请求下层服务携带日志Id

jk-web传递到jk-service层的时候

强烈建议使用post时候,参数使用该方法生成请求Map

Map request = RequestUtil.creatBaseRequestMap(MDC.get("tranctLog"));
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值