什么!竟然將日志send我臉上整份?

LogRocket

版本

  • v1.0.1 「2024-12-06」
icon_logo.png

簡介

當前開發(fā)者可在AS控制臺查看日志,或者通過adb查看日志籽孙,對于開發(fā)大有幫助烈评;發(fā)生異常也可通過日志上報到日志平臺去查看,十分便捷犯建;

LogRocket換了一個角度讲冠,從測試者的角度出發(fā);

開發(fā)者應該遇到過一些情況:

  • 接口數(shù)據(jù)不對适瓦,測試人員直接拿著手機找過來竿开,說報錯了,好一點的可能會自己會抓包查看網(wǎng)絡接口玻熙;不好的就不說了否彩。
  • 一些日志崩潰也是如此,測著測著嗦随,突然閃退列荔,接了日志系統(tǒng)還好,還能去查看到底什么原因導致的,如果沒接入贴浙,則需要測試人員反復的去猜測復現(xiàn)砂吞,十分不便;
  • 接口出了問題崎溃,后端找測試要參數(shù)蜻直,然后測試自己去抓包或者去找移動端開發(fā);
  • ....

真想給每個測試人員安裝一個AS

整個就是基于這種小處境出發(fā)袁串,解決測試人員查看日志的問題袭蝗;

LogRocket基于此出發(fā),將終端設備作為Server般婆,直接將logcat的日志通過ws直接發(fā)送出來到腥,開發(fā)者可在日志中加入網(wǎng)絡接口打印,以及一些日常打印蔚袍,測試人員可直接訪問對應的ws地址就可直接閱讀網(wǎng)絡請求以及崩潰日志乡范。

可第一時間發(fā)現(xiàn)問題并保留日志信息及時反饋,減少中間流轉時間啤咽,提升效率晋辆。

對代碼的影響

LogRocket建議僅僅在開發(fā)環(huán)境中使用,不建議上生產(chǎn)環(huán)境宇整,以免引發(fā)不必要的錯誤瓶佳;

為了實現(xiàn)這種解耦,于是將WebSocket得開啟和關閉放在了Provider中鳞青,然后通過「debugImplementation」得方式進行依賴霸饲,這樣在生產(chǎn)環(huán)境自動剔除,避免了對生產(chǎn)環(huán)境的干擾臂拓。

另外厚脉,終端既然作為Server端,那他就得提供一個ws地址胶惰,開發(fā)者可直接在wifi鏈接頁面去查看自己手機的ip傻工;通過LogRocket也提供了方法去獲取對應終端的ip。

端口號是采用隨機分配的空閑端口號孵滞,因為一個人可能會負責多個應用的開發(fā)中捆,同一臺設備,同一個網(wǎng)絡下坊饶,不能同一個端口泄伪,故每次生成的ws鏈接端口號都不同。

這里LogRocket也提供的方法來獲取整個ws的訪問地址幼东;

于是這里就會有一個問題臂容,既然是采用「debugImplementation」得方式進行依賴科雳,那肯定不能直接使用LogRocket的方法,不然在生產(chǎn)環(huán)境會因為沒有依賴找不到對應的Class而報錯脓杉,所以這里又提供了一個類糟秘,專門用于反射獲取ws地址的。

對于知負責一個應用的開發(fā)者球散,如果會覺得每次更換端口顯得很麻煩尿赚,想固定端口,這個也是提供了解決辦法蕉堰,可以在AndroidManifest.xml中配置凌净;
在application節(jié)點中加入以下配置(默認值為false):

<meta-data
    android:name="uniquePort"
    android:value="true" />

這里又有了一個問題,ws有了屋讶,難道還要找個ws測試網(wǎng)站去看日志冰寻?這個可以開發(fā)者自行實現(xiàn),但是LogRocket也提供了一個默認h5頁面皿渗,可以直接去查看斩芭,對應的文件為index.html。

這個index.html也是我去找ChatGpt生成的乐疆,還帶了日志過濾划乖,方便使用者過濾日志。如果您覺得UI不太好看挤土,或者功能過于簡陋琴庵,可以自行找ChatGpt去定制生成,或者讓前端同學幫忙搞搞仰美。

因為就只是臨時起意的一個小工具迷殿,所以就不想去搭服務器放網(wǎng)頁,所以直接把h5文件放到了github上筒占,或者直接通過瀏覽器訪問github上的這個index.html即可贪庙。

日志查看

對于index.html,輸入ws鏈接翰苫,回車即可;

index_info.png

注意點

需要保持ws的Server和Client在同一網(wǎng)絡

接入使用方式

倉庫引入

repositories {
        maven { url = uri("https://jitpack.io") }
        google()
        mavenCentral()
    }

依賴引入

debugImplementation 'com.github.xieyang94.LogRocket:log-rocket:v1.0.1'

固定端口配置

默認非固定端口(false)

<meta-data
    android:name="uniquePort"
    android:value="true" />

反射獲取ws鏈接

class Test {
    
    public String getWsAddress(Context context) {
        String result = null; // 默認值这橙,如果反射調用失敗則返回此值
        try {
            // 獲取MetaUtil類的Class對象
            Class<?> metaUtilClass = Class.forName("cn.net.yto.logrocket.refect.ReflectLogRocket");
            // 獲取getPort方法的Method對象
            Method getPortMethod = metaUtilClass.getMethod("wdAddress", Context.class);
            // 調用getPort方法
            // 注意:如果getPort是非公開方法奏窑,可能需要設置accessible為true
            getPortMethod.setAccessible(true);
            // 創(chuàng)建MetaUtil類的實例
            Object metaUtilInstance = metaUtilClass.newInstance();
            // 調用invoke方法執(zhí)行getPort(context)
            result = (String) getPortMethod.invoke(metaUtilInstance, context);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }
}

被反射的類:

public class ReflectLogRocket {

    /**
     * 反射獲取ws地址
     *
     * @param context
     * @return
     */
    public String wdAddress(Context context) {
        return LogRocket.getInstance().getWsAddress(context);
    }
}

您也可以不采用這種用法,可以直接把代碼拷貝到您的項目中屈扎,然后直接調用埃唯。

Demo

Demo樣式


app_cut.jpg

Github項目地址

LogRocket

LogRocket.apk

日志查看

可下載apks目錄下的apk體驗下,在github上的index.html進行ws的訪問會因為https和ws之間的協(xié)議問題不能暢通鹰晨,所以訪問時需要將index.html的訪問協(xié)議從https改為http即可墨叛。

其他

有問題可以反饋止毕,我會盡最大的努力解決或采納。

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末漠趁,一起剝皮案震驚了整個濱河市扁凛,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌闯传,老刑警劉巖谨朝,帶你破解...
    沈念sama閱讀 223,002評論 6 519
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異甥绿,居然都是意外死亡字币,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,357評論 3 400
  • 文/潘曉璐 我一進店門共缕,熙熙樓的掌柜王于貴愁眉苦臉地迎上來洗出,“玉大人,你說我怎么就攤上這事图谷◆婊睿” “怎么了?”我有些...
    開封第一講書人閱讀 169,787評論 0 365
  • 文/不壞的土叔 我叫張陵蜓萄,是天一觀的道長隅茎。 經(jīng)常有香客問我,道長嫉沽,這世上最難降的妖魔是什么辟犀? 我笑而不...
    開封第一講書人閱讀 60,237評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮绸硕,結果婚禮上堂竟,老公的妹妹穿的比我還像新娘。我一直安慰自己玻佩,他們只是感情好出嘹,可當我...
    茶點故事閱讀 69,237評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著咬崔,像睡著了一般税稼。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上垮斯,一...
    開封第一講書人閱讀 52,821評論 1 314
  • 那天郎仆,我揣著相機與錄音,去河邊找鬼兜蠕。 笑死扰肌,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的熊杨。 我是一名探鬼主播曙旭,決...
    沈念sama閱讀 41,236評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼盗舰,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了桂躏?” 一聲冷哼從身側響起钻趋,我...
    開封第一講書人閱讀 40,196評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎沼头,沒想到半個月后爷绘,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,716評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡进倍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,794評論 3 343
  • 正文 我和宋清朗相戀三年土至,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片猾昆。...
    茶點故事閱讀 40,928評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡陶因,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出垂蜗,到底是詐尸還是另有隱情楷扬,我是刑警寧澤,帶...
    沈念sama閱讀 36,583評論 5 351
  • 正文 年R本政府宣布贴见,位于F島的核電站烘苹,受9級特大地震影響,放射性物質發(fā)生泄漏片部。R本人自食惡果不足惜镣衡,卻給世界環(huán)境...
    茶點故事閱讀 42,264評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望档悠。 院中可真熱鬧廊鸥,春花似錦、人聲如沸辖所。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,755評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽缘回。三九已至吆视,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間酥宴,已是汗流浹背揩环。 一陣腳步聲響...
    開封第一講書人閱讀 33,869評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留幅虑,地道東北人。 一個月前我還...
    沈念sama閱讀 49,378評論 3 379
  • 正文 我出身青樓顾犹,卻偏偏與公主長得像倒庵,于是被迫代替她去往敵國和親褒墨。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,937評論 2 361

推薦閱讀更多精彩內(nèi)容