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