loginsight跨平台日誌檢視工具

2021-10-24 06:02:07 字數 1606 閱讀 8875

看日誌,是研發的日常工作,相信你已經從各種報錯日誌中查出許多bug,但也被冗長、複雜的日誌困擾過無數次。

在日常工作中,我也經常痛苦於看日誌,一般是這些日誌長得面目猙獰:

不僅日誌看的不順眼,看日誌的工具也不蹭手:

想按某個關鍵字過濾日誌,有的工具還不支援

剛剛自己分析得頭頭是道,一叫人過來就忘記從哪看起了

其實,這些問題,我們可以分為兩類來看待。一類是工具問題,也就是工具的功能還不夠完善;一類是方法問題,也就是缺少系統的方法來從日誌中排查問題。

對於前者,我們需要的是專業的日誌檢視工具,而不是使用編輯器;對於後者,我有總結了一些方**,倒是可以分享分享。

回顧看,排查日誌一般步驟是:了解問題 => 定位出錯位置 => 檢視上下文 => 推測出錯原因

而上面提到的一些問題,比如看日誌忘記看到**了,講解不知從而談起等等,其實是沒有把日誌瀏覽的足跡、蒐集的資訊、總結的疑點、結論記錄下來。

要把這些資訊記錄並視覺化,你認為最合適的方式是什麼呢?

我的方式是「時間線」。

像整理歷史事件,分析歷史事件一樣,我們看到日誌中有價值的地方,就做乙個標記,把它放入時間線裡。

起初,時間線只是乙個書籤欄,幫我們記錄位置資訊。比如出錯位置在**,xx時間***在幹嘛,xx在xx之前/之後等等

接著,我們開始結合日誌+時間線,找到一些疑點。這個地方可疑,加個備註;這個地方的時序貌似不對,標個黃色;這個事件似乎沒啥意義,先刪了

上面的可疑點的梳理,基本圍繞著「時間線條」這個工具在走,但,其實本質上是對你自己思路的檢視,也就是,這個時候的「時間線」已經在扮演思路視覺化的過程了。

最後,我們對可疑點進一步昇華,發現了這份日誌對應問題的根本原因。

上面提到的「時間線」,其核心是保持思路一直延續,不被工具操作,或是其他資訊干擾、打斷。

日誌排查的過程中,經常要用到的功能是:過濾含某個關鍵字的日誌。但是僅僅過濾就行了嗎?

如果只是過濾的話,會導致資訊丟失。我們其實需要了解的是在整個日誌範疇,這個過濾規則下的行為發生了什麼,分布在哪些位置,上下文(其他模組)在幹嘛,與我剛剛記錄到時間線裡的資訊前後關係是怎樣的……

也就是說,按關鍵字過濾出的資訊除本身的資訊價值外,還需要對照主體日誌來提取更多資訊。換言之,既是平行的,又是交錯的。

那麼,怎樣才能合理的解決這個矛盾呢?

我把關鍵字過濾出的資訊定義為輔助資訊,放在過濾小窗,主體視窗顯示完整日誌,實現平行檢視;同時,以「時間」為「紐帶」連線「主體視窗」、「過濾小窗」、「時間線」,無論雙擊哪乙個視窗中的事件,其他兩個視窗都會立即定位到對應位置,這就實現了資訊交織。

且看下圖:

圖中3大區域,左上是主體視窗,左下是過濾小窗,右邊是時間線。

工具!為了讓天下沒有難看的日誌,定位到xx行、前進/後退、反向搜尋、字型設定……等等,這些功能也不能少

既然把日誌分析這件事已經摸索出了一定的經驗和方法,而現有工具又沒有特別蹭手的,當然是要自己寫乙個了!

來看看我寫的loginsight吧:loginsight

最簡單跨平台的日誌庫

這裡是我之前最常用的日誌庫的 所有操作幾乎都是通過巨集實現。只需要修改 fprintf 的引數就可以很容易的重定向的不同的檔案或者終端。簡單易懂,全部是巨集的實現 跨平台,支援android,linux,macos,windows 易擴充套件,只需要簡單的封裝就可以日誌實現重定向 使用者友好,不同級...

跨平台相關

二者區別 strdup是posix,strdup是windows特定。在unix上,使用的strdup。在不同作業系統的lib庫名字不同的,為了讓程式可以多平台,需要在巨集定義中判斷當前執行作業系統和編譯器的型別,動態調整。windows win32 win32 linux linux linux ...

跨平台工具

作圖 做好圖 inkspace 向量圖 inpaint 提供類似 photoshop 的基礎功能,簡單易用 imagemagick pdf 處理 1.small pdf 2.i love pdf 編輯器1.sublime text 2.typora markdown 3.texmaker latex...