我們?cè)陧?xiàng)目中日志記錄這塊也算是比較重要的,有時(shí)候用戶程序出什么問(wèn)題,光靠服務(wù)器的日志還不能準(zhǔn)確的找到問(wèn)題
現(xiàn)在一般記錄日志有幾種方式:
1、使用第三方工具來(lái)記錄日志,如騰訊的Bugly,它是只把程序的異常日志,程序崩潰日志,以及一些自定義的操作日志上傳到Bugly的后臺(tái)
2、我們把日志記錄到本地,在適合的時(shí)候再上傳到服務(wù)器
這里我要介紹的是第二種方法,第一種和第二種可以一起用。
假如現(xiàn)在有下面這樣的日志記錄要求
1、日志記錄在本地
2、日志最多記錄N天,N天之前的都需要清理掉
3、日志可以上傳到服務(wù)器,由服務(wù)器控制是否需要上傳
4、上傳的日志應(yīng)該壓縮后再上傳
實(shí)現(xiàn)思路
1、日志記錄在本地
也就是把字符串保存到本地,我們可以用 將NSString轉(zhuǎn)換成NSData然后寫入本地,但是NSData寫入本地會(huì)對(duì)本地的文件進(jìn)入覆蓋,所以我們只有當(dāng)文件不存在的時(shí)候第一次寫入的時(shí)候用這種方式,如果要將日志內(nèi)容追加到日志文件里面,我們可以用NSFleHandle來(lái)處理
2、日志最多記錄N天,N天之前的都需要清理掉
這個(gè)就比較容易了,我們可以將本地日志文件名定成當(dāng)天日期,每天一個(gè)日志文件,這樣我們?cè)诔绦騿?dòng)后,可以去檢測(cè)并清理掉過(guò)期的日志文件
3、日志可以上傳到服務(wù)器,由服務(wù)器控制是否需要上傳
這個(gè)功能我們需要后臺(tái)的配合,后臺(tái)需要提供兩個(gè)接口,一個(gè)是APP去請(qǐng)求時(shí)返回當(dāng)前應(yīng)用是否需要上傳日志,根據(jù)參數(shù)來(lái)判斷,第二個(gè)接口就是上傳日志的接口
4、上傳的日志應(yīng)該壓縮后再上傳
一般壓縮的功能我們可以使用zip壓縮,OC中有開(kāi)源的插件 ZipArchive 地址:http://code.google.com/p/ziparchive/ (需要FQ)
具體實(shí)現(xiàn)代碼
我們先將ZipArchive引入到項(xiàng)目中,注意還需要引入系統(tǒng)的 libz.tbd 動(dòng)態(tài)庫(kù),好下: