文章预览
原文:juejin.cn/post/7407275971902357558 为了更方便地排查问题,电商交易系统的日志中需要记录用户id和订单id等字段。然而,每次打印日志都需要手动设置用户id,这一过程非常繁琐,需要想个办法优化下。 log.warn( "user:{}, orderId:{} 订单提单成功" ,userId, orderId); log.warn( "user:{}, orderId:{} 订单支付成功" ,userId, orderId); log.warn( "user:{}, orderId:{} 订单收到履约请求" ,userId, orderId); log.warn( "user:{}, orderId:{} 订单履约成功" ,userId, orderId); 1、目标 打印日志时,自动填充用户id和订单Id等通参,无需手动指定 2、实现思路 日志模板中声明占位符 userId , orderId 在业务入口将 userId 放入到线程 ThreadLocal 本地变量中。 使用 SpringAop + 注解 自动将第二步的用户信息放到线程上下文 3、配置日志变量,读取上下文变量 %X{}可以自定义占位符,例如本例中 使用 userId:%X{userId} or
………………………………