CocoaLumberjack使用以及日誌文件獲取
本文主要介紹之前項目中使用到CocoaLumberjack, 然後獲取CocoaLumberjack爲我們存儲的日誌文件, 在用戶反饋的時候, 將日誌文件打包上傳到服務器, 以便我們查找錯誤信息。
CocoaLumberjack使用
關於CocoaLumberjack的使用, 網上已經有很多講解了, 這裏貼幾篇文章供大家參考:
CocoaLumberjack 和 XcodeColors 的安裝和使用
利用 CocoaLumberjack 搭建自己的 Log 系統
CocoaLumberjack日誌獲取
這裏主要是講解怎麼獲取CocoaLumberjack爲我們保存的日誌文件, 其實使用起來也非常方便, 主要是利用DDFileLogger來獲取沙盒中保存的文件:
//獲取DDLog打印的日誌
DDFileLogger *fileLogger = [[DDFileLogger alloc] init];
//獲取log文件夾路徑
NSString *logDirectory = [fileLogger.logFileManager logsDirectory];
DDLogDebug(@"%@", logDirectory);
//獲取排序後的log名稱
NSArray <NSString *>*logsNameArray = [fileLogger.logFileManager sortedLogFileNames];
DDLogDebug(@"%@", logsNameArray);
通過以上的方式, 我們就可以獲取日誌文件的目錄, 以及每個日誌文件的名稱, 然後接下來要做的就是講所有日誌文件打包上傳到服務器, 一般而言, 我的做法就是講日誌文件打包成zip文件, 然後上傳到服務器, 接下來就是怎麼打包的問題?
ZipArchive的使用
關於ZipArchive的更多信息, 大家可以在github上查找, 倉庫地址:https://github.com/mattconnolly/ZipArchive, 可以查看相關信息。
這裏還有一篇關於 iOS中使用ZipArchive 壓縮和解壓縮文件的文章, 具體介紹了怎麼使用ZipArchive壓縮和解壓文件
接下來具體介紹我是怎麼使用的:
//創建zip文件
ZipArchive *logZip = [[ZipArchive alloc] init];
//zip文件路徑
NSString *logZipPath = [logDirectory stringByAppendingString:@"/feadbackLog.zip"];
if ([logZip CreateZipFile2:logZipPath]) {
DDLogDebug(@"創建zip成功");
//添加log文件
[logsNameArray enumerateObjectsUsingBlock:^(NSString * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
//使用log本身的名字命名
[logZip addFileToZip:[logDirectory stringByAppendingString:[NSString stringWithFormat:@"/%@", obj]] newname:obj];
}];
}else{
DDLogDebug(@"創建zip失敗");
[logZip CloseZipFile2];
//返回爲空
return nil;
}
//關閉
[logZip CloseZipFile2];
我主要是結合CocoaLumberjack相關的信息, 在CocoaLumberjack存儲日誌的目錄下, 創建zip文件, 然後將log文件加入到zip包中, 最後可以根據zip包的地址, 獲取zip包文件信息, 然後上傳到服務器, 這樣整個獲取過程和打包流程就結束了, 主要是利用CocoaLumberjack和ZipArchive兩個開源框架實現。