anylogjava動(dòng)態(tài)日志注入工具
anylog 是一個(gè)可以在代碼的任意區(qū)域無(wú)入侵地加入日志的工具,適用于線上問(wèn)題排查。
anylog 為開發(fā)人員提供一個(gè)易于使用的平臺(tái),幫助開發(fā)人員在正在運(yùn)行的系統(tǒng)中隨時(shí)加入自己想要的日志,而免于修改代碼和重啟。
使用場(chǎng)景舉例
1、一些同學(xué)在寫代碼時(shí),把異常吃掉了,使得問(wèn)題難以查找,可以使用這個(gè)工具,動(dòng)態(tài)打印出被吃掉 的異常,而不用停機(jī)。 2、一些項(xiàng)目依賴第三方j(luò)ar包,如果發(fā)生問(wèn)題,但第三方包中無(wú)日志打印,以往可能需要重新編譯第 三方包,加上日志,重啟服務(wù),然后排查問(wèn)題。但使用這個(gè)工具,就可以直接動(dòng)態(tài)加入日志,而不用 修改第三方j(luò)ar包,也不用重啟。
已有功能
1、讓系統(tǒng)打印某個(gè)exception的堆棧,無(wú)論此exception是否已經(jīng)被吃掉都可打印 2、在某個(gè)指定類的某個(gè)方法的某一行,輸出日志。 3、在某個(gè)指定類的某個(gè)方法的開始,輸出日志。 4、在某個(gè)指定類的某個(gè)方法的結(jié)束,輸出日志。 5、打印方法耗時(shí),支持方法嵌套。 如果需要擴(kuò)展新的功能(例如輸出jvm的cpu占用,內(nèi)存大小等),只需要實(shí)現(xiàn)spi中的 com.github.jobop.anylog.spi.TransformDescriptor 和com.github.jobop.anylog.spi.TransformHandler接口, 然后把實(shí)現(xiàn)的jar包放到providers目錄中即可識(shí)別。
使用方法
1、獲取運(yùn)行程序: 1)可以到以下地址獲取正式發(fā)行版:https://github.com/jobop/release/tree/master/anylog 2)你也可以clone下源碼后,執(zhí)行如下命令,生成運(yùn)行程序,生成的運(yùn)行程序?qū)⒃赿ist目錄下 生成windows版本: mvn install 生成linux版本: mvn install -Plinux 2、直接執(zhí)行startup.bat或者startup.sh即可運(yùn)行起來(lái) 3、訪問(wèn) http://127.0.0.1:52808 即可使用
功能擴(kuò)展
anylog利用spi機(jī)制實(shí)現(xiàn)其擴(kuò)展,如果你想要對(duì)anylog增加新的功能(例如添加返回值打印的功能)可以按照如下步驟操作: 1、使用如下命令,生成一個(gè)spi實(shí)現(xiàn)工程,并導(dǎo)入eclipse mvn archetype:generate -DarchetypeGroupId=com.github.jobop -DarchetypeArtifactId=anylogspi-archetype -DarchetypeVersion=1.0.4 2、參照該工程中已有的兩個(gè)例子(一個(gè)是在方法開始插入日志,一個(gè)是在方法結(jié)束插入日志),實(shí)現(xiàn)TransformDescriptor和TransformHandler接口 3、把兩個(gè)接口實(shí)現(xiàn)類的全路徑,分別加到以下兩個(gè)文件中 src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformDescriptor src/main/resources/META-INF/services/com.github.jobop.anylog.spi.TransformHandler 4、執(zhí)行mvn install打包,在dist下會(huì)生成你的擴(kuò)展實(shí)現(xiàn)jar。 5、把擴(kuò)展實(shí)現(xiàn)jar拷貝到anylog的providers目錄下,重啟即可生效。 tips:在實(shí)現(xiàn)spi時(shí),我們提供了SpiDesc注解,該注解作用在你實(shí)現(xiàn)的TransformDescriptor上,可以用來(lái)生成功能描述文字。 如果要深入了解spi機(jī)制,請(qǐng)自行g(shù)oogle:java spi
評(píng)論
圖片
表情
