iOS列印日誌到遠端伺服器

發表於2015-04-09

iOS利用系統工具獲取DeviceLog不是一件很方便的事,有時候我們執行的一些狀態不一定顯示在螢幕上,但是我們需要得到這一刻的一些資料。比如我們現在的產品人員要測試統計,比如按下某個按鈕傳送統計事件,整個介面上能夠看到的也只是網路的菊花轉了一圈,不能實質的看到統計的內容,並且在後臺查詢統計也不太容易,以及後臺會有一定的延時等等原因,所以我做了一個工具,專門用於產品人員去測試一些客戶端傳送的某種型別的日誌。

該工具的主要原理很簡單,使用Socket搭了一個簡易的HTTPServer,客戶端可以使用二維碼掃描獲取伺服器資訊,然後儲存起來,以後在需要的時候,給這個給這個HTTPServer傳送HTTP請求就可以了,每次HTTPServer根據客戶端所傳的引數(內容/字型顏色/字型大小)去將客戶端所傳的內容展示在頁面上就可以了。

應用主介面如圖所示

主介面還是比較簡單的,二維碼的資訊主要是儲存當前伺服器的訪問地址,字型大小就是正文的預設字型大小,關閉則表示關閉伺服器。

我們開啟LogServer之後,就代表啟動了HTTPServer,這時候如果我們通過瀏覽器進行一次HTTP請求,我們會把請求的內容列印到我們的HTTPServer上。假設我們請求如下

http://127.0.0.1:10304/?parameter=STTestLogServer&color=ff0000

我們就可以看到我們的LogServer中列印出來了一行字,為紅色的STTestLogServer, 如圖所示: 

PS. 伺服器預設埠號為10304, parameter就是我們要列印的內容,color則表示顏色,如果傳入了font=16的話,則表示字型大小為16

工具的使用很簡單,只需要客戶端傳送HTTP請求就可以了,對於客戶端,我這邊也封裝好了一些邏輯,可以直接使用。有關二維碼的掃描部分,是使用系統自帶的AVFoundation,目前只支援iOS7以上,我直接貼下載地址了,就不貼上到這裡了,當然這個二維碼只是工具,方便客戶端記住服務端的資訊,使用其他方式也可以,可以點此處下載STQRCode。同時,我也封裝了幾個方法,用於更方便的將日誌列印粗來,網路庫大家可以任意替換,目前伺服器支援GET/POST請求(暫不支援mutilpart)。

掃描二維碼部分

我習慣把一些測試功能加到window的搖一搖上,這樣方便。最後執行結果如下:

這個工具只是提供一種功能,程式碼寫的也比較粗糙,只為拋磚引玉。有興趣的可以私我,大家一起完善Server端。 STLogServer下載地址

PS.該Server是使用Java寫的,所以需要Java虛擬機器來支援程式的執行,大家需要自行安裝JRE。 JRE官方下載地址

相關文章