<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          anylogjava動(dòng)態(tài)日志注入工具

          聯(lián)合創(chuàng)作 · 2023-09-30 00:20

          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
          瀏覽 20
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  女人13p| 69视频在线免费观看 | 国产精品无码污污污 | 大香蕉网69 | 韩国精品免费观看 |