您好,登錄后才能下訂單哦!
這篇文章主要介紹“線上排障技巧之怎么動態修改Logger級別”,在日常操作中,相信很多人在線上排障技巧之怎么動態修改Logger級別問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”線上排障技巧之怎么動態修改Logger級別”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
「效果演示:」
「本文內容重點:」
Arthas工具簡介
本地測試:實時修改LOGGER級別
線上實戰:實時打印MyBatis SQL語句
總結
Arthas工具簡介Arthas是阿里開源的Java診斷工具,它的功能可以大致參考下圖:
它運行的原理是通過字節碼生成工具(ASM字節碼增強),將代理邏輯編織到原來的類里,實現對應的監控調試等功能。
本地測試:實時修改LOGGER級別
安裝arthas
網絡安裝
在接通外網的環境下,可以使用快速網絡安裝,會從阿里的源拉去全量包。
curl -O https://arthas.aliyun.com/arthas-boot.jar java -jar arthas-boot.jar
全量安裝
如果本地外網環境不通,比如某些容器內是不允許外網訪問的,那么可以使用預先下載好的全量安裝包,然后解壓后運行包內的jar,使用命令:
java -jar arthas-boot.jar
啟動arthas我在本地啟動arthas,效果如下圖:
全局Logger信息
使用命令:
logger
可以看到所有logger的信息,包括其中每個appenders。
使用如下命令,修改名稱為ROOT的logger的日志級別至debug級別:
logger --name ROOT --level debug
可以看到多出了debug級別的輸出。
指定類名的logger信息
在有多個logger的情況下,可以查找指定名稱的logger
logger -n ROOT
指定classloader的logger信息
如果需要改變指定類的輸出級別,先要定位到該類的classLoader,然后修改該clasLoader的logger。
sc -d cn.monitor4all.miaoshaweb.DynamicLoggerTest | grep classLoaderHash
使用sc命令查看你需要改變的類信息:
隨后可以通過classLoader找到其對應的logger:
logger -c 18b4aac2
然后就可以調整對應的logger日志級別:
logger -c 18b4aac2 --name ROOT --level debug
使用 ongl 命令
此外,Arthas還支持使用ognl來修改日志級別。但是這種方法對log4j不友好,修改會報錯。并且就算支持的logback/slf4j,也需要復雜的形如ognl -c @org.slf4j.LoggerFactory@getLogger("root").setLevel()的命令才能修改,并不是一個很好的辦法。
線上實戰:實時打印MyBatis SQL語句
容器內啟動arthas
我的線上容器,是沒有外網訪問權限的(這種情況蠻常見的),我將全量包解壓在容器內運行:
打印DEBUG級別的SQL日志
下圖是沒有DEBUG信息的一條請求日志,可以看到只有入參出參的攔截器信息(INFO級別):
使用logger --name ROOT --level debug,將SQL語句輸出出來:
畢竟,很多時候線上的bug是不小心拼錯SQL導致。
到此,關于“線上排障技巧之怎么動態修改Logger級別”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。