這周用buddy 對 spring controller註解做一個日誌監控
buddy 只是做的aop功能,具體調用還是spring 容器的log 對象
這個功能在jar 上運行良好,但是war 出現 NoClassDefFoundError 日誌對象
經過嘗試,和收集資料,知道是類加載導致的
byte-buddy 的ClassLoader 是appClassLoader
jar 的類加載機制,還沒去百度,可能依靠於mavan 庫,所以調用,可以找到【後面更新完善】
war 類加載機制,參考tomcat 類加載機制,其中webclassLoader 是一個項目私有的,所有訪問webapp log,出現NoClassDefFoundError,其次,不同的classLoader 加載的對象也不同,所以我這邊必須獲取同一個webclassLoader 下的log
通過實驗,發現bytebuddy 的Thread。classLoader,就是執行的wepclassLoader,但是由於,獲取通過一個webappClassLoader
所有我在日誌類那邊加了一個方法,通過反射解決
c++ Jvm 實現原理【https://juejin.im/post/5b0b732bf265da0dcc69d084】
classLoader【https://www.cnblogs.com/KingIceMou/p/6769456.html】
class 文件和Thread 執行區別【https://www.cnblogs.com/549294286/p/3714692.html】【主要參考】】
classLoader 特性[https://blog.csdn.net/xyang81/article/details/7292380]