我們在項目中日志記錄這塊也算是比較重要的,有時候用戶程序出什么問題,光靠服務器的日志還不能準確的找到問題

現在一般記錄日志有幾種方式:

1、使用第三方工具來記錄日志,如騰訊的Bugly,它是只把程序的異常日志,程序崩潰日志,以及一些自定義的操作日志上傳到Bugly的后臺

2、我們把日志記錄到本地,在適合的時候再上傳到服務器

這里我要介紹的是第二種方法,第一種和第二種可以一起用。

假如現在有下面這樣的日志記錄要求

1、日志記錄在本地

2、日志最多記錄N天,N天之前的都需要清理掉

3、日志可以上傳到服務器,由服務器控制是否需要上傳

4、上傳的日志應該壓縮后再上傳

實現思路

1、日志記錄在本地

  也就是把字符串保存到本地,我們可以用 將NSString轉換成NSData然后寫入本地,但是NSData寫入本地會對本地的文件進入覆蓋,所以我們只有當文件不存在的時候第一次寫入的時候用這種方式,如果要將日志內容追加到日志文件里面,我們可以用NSFleHandle來處理

2、日志最多記錄N天,N天之前的都需要清理掉

  這個就比較容易了,我們可以將本地日志文件名定成當天日期,每天一個日志文件,這樣我們在程序啟動后,可以去檢測并清理掉過期的日志文件

3、日志可以上傳到服務器,由服務器控制是否需要上傳

  這個功能我們需要后臺的配合,后臺需要提供兩個接口,一個是APP去請求時返回當前應用是否需要上傳日志,根據參數來判斷,第二個接口就是上傳日志的接口

4、上傳的日志應該壓縮后再上傳

  一般壓縮的功能我們可以使用zip壓縮,OC中有開源的插件 ZipArchive 地址:http://code.google.com/p/ziparchive/ (需要FQ)

具體實現代碼

我們先將ZipArchive引入到項目中,注意還需要引入系統(tǒng)的 libz.tbd 動態(tài)庫,好下:

網友評論