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两个开源框架实现。