这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录 前一修订版 后一修订版 | 前一修订版 | ||
分享:技术:log4j:实现log4j打日志带uuid [2016/12/24 09:50] gxx |
分享:技术:log4j:实现log4j打日志带uuid [2016/12/24 11:12] (当前版本) gxx |
||
---|---|---|---|
行 1: | 行 1: | ||
====== 实现log4j打日志带uuid(同一个请求线程同一个uuid) ====== | ====== 实现log4j打日志带uuid(同一个请求线程同一个uuid) ====== | ||
===== 实现思路 ===== | ===== 实现思路 ===== | ||
+ | - [目标前提]:尽量不改变原有的写法Logger logger = Logger.getLogger(A.class); | ||
- 新建Logger子类BaseUuidLogger,重写debug,info等方法;在ThreadLocal中获取同一个uuid;打印日志前带上这个uuid | - 新建Logger子类BaseUuidLogger,重写debug,info等方法;在ThreadLocal中获取同一个uuid;打印日志前带上这个uuid | ||
- spring能管理到的类(@controller,@service),使用aop切面,扫描Logger变量强制设置成BaseUuidLogger | - spring能管理到的类(@controller,@service),使用aop切面,扫描Logger变量强制设置成BaseUuidLogger | ||
行 527: | 行 528: | ||
</code> | </code> | ||
===== [待探讨方式2]修改Log4j源码 ===== | ===== [待探讨方式2]修改Log4j源码 ===== | ||
- | 拿出Log4j源码,修改debug,info等方法(或者修改这些方法统一调后面的某个方法),在打印信息之前带上uuid(在ThreadLocal中获取同一个uuid)。重新编译,放到src/main/java/Logger对应的包路径下。 | + | 拿出Log4j源码,修改debug,info等方法(或者修改这些方法统一调后面的某个方法),在打印信息之前带上uuid(在ThreadLocal中获取同一个uuid)。重新编译,放到src/main/java/目录下Logger对应的包路径下。 |
==== 用法 ==== | ==== 用法 ==== | ||
和原始的Logger对象用法一样 | 和原始的Logger对象用法一样 |