我們?cè)陧?xiàng)目中日志記錄這塊也算是比較重要的,有時(shí)候用戶程序出什么問題,光靠服務(wù)器的日志還不能準(zhǔn)確的找到問題
現(xiàn)在一般記錄日志有幾種方式:
1、使用第三方工具來記錄日志,如騰訊的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來處理
2、日志最多記錄N天,N天之前的都需要清理掉
這個(gè)就比較容易了,我們可以將本地日志文件名定成當(dāng)天日期,每天一個(gè)日志文件,這樣我們?cè)诔绦騿?dòng)后,可以去檢測(cè)并清理掉過期的日志文件
3、日志可以上傳到服務(wù)器,由服務(wù)器控制是否需要上傳
這個(gè)功能我們需要后臺(tái)的配合,后臺(tái)需要提供兩個(gè)接口,一個(gè)是APP去請(qǐng)求時(shí)返回當(dāng)前應(yīng)用是否需要上傳日志,根據(jù)參數(shù)來判斷,第二個(gè)接口就是上傳日志的接口
4、上傳的日志應(yīng)該壓縮后再上傳
一般壓縮的功能我們可以使用zip壓縮,OC中有開源的插件 ZipArchive 地址:http://code.google.com/p/ziparchive/ (需要FQ)
具體實(shí)現(xiàn)代碼
我們先將ZipArchive引入到項(xiàng)目中,注意還需要引入系統(tǒng)的 libz.tbd 動(dòng)態(tài)庫,好下:
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無線安全]玩轉(zhuǎn)無線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來看看(二) 2017-07-26