iOS开发(日志记录文件及压缩上传OSS)
@TOC
一、简述
发现APP上传本地日志文件相当的好用,根据之前研究学习的对这一模块做了一些更具体的优化处理。从标题可以看出,实现这一功能分以下几个步骤:
1、日志记录本地文件
2、日志文件压缩[xx.zip]
3、压缩之后的文件上传
4、压缩文件删除
这里写了一个【Demo】,将日志记录和日志压缩放在【LogManager】文件,日志上传放在【ZMAliOSSManager】文件,日志上传OSS我只用了一个简单上传的实现,没有做鉴权处理和其他上传方式,但是相关的实现方法写集成了,希望需要的有用。当然这也不影响我对功能的实现,以下是我实现功能的几个实例:
//
//ViewController.m
//ZMLogZipUpdateDemo
//
//Created by chenzm on 2018/10/11.
//Copyright ? 2018年 chenzm. All rights reserved.
//#import "ViewController.h"
#import "ZMLogZipOssHeader.h"@interface ViewController ()///显示日志
@property(nonatomic,strong)ZMLogView *logView;
@end@implementation ViewController- (void)viewDidLoad {
[super viewDidLoad];
//写入数据到本地文件并显示
[self testShowLocalLog];
//1、直接上传文件(不压缩)
[self testUpdateLocalFile];
//2、压缩打包后上传文件
[self testUpdateLocalZipFile];
//3、根据上传文件的大小上传文件
[self testCalcuUpdateFile];
//4、上传隔天上一个的日志文件
[self testUpdateTodayBeforeADayFile];
}///写入数据到本地文件并显示
-(void)testShowLocalLog{
//写入数据到本地文件
kLocalLog(@"错误信息(文件类/方法)",@"具体信息啊啊啊啊啊啊");
//获取日志信息并显示
NSString *str = [[LogManager sharedInstance] readFile:@"2018-10-11"];
NSLog(@"%@",str);
//渲染
[self.logView logInfo:str];
}///1、直接上传文件
-(void)testUpdateLocalFile{
[[ZMAliOSSManager shareManager] zm_configClient];
//获取文件路径
NSString *path = [NSString stringWithFormat:@"%@%@%@",NSHomeDirectory(),kCacheLogFilePath,@"2018-10-11"];
//上传后文件的名称
NSString *upFileNameStr = @"test[2018-10-11]";
[[ZMAliOSSManager shareManager] zm_putResourceWithLocalFilePath:path fileName:upFileNameStr response:^(BOOL isSuccess, NSString *resultUrl) {
if (isSuccess == YES) {
NSLog(@"上传文件成功");
}
}];
}///2、压缩打包后上传文件
-(void)testUpdateLocalZipFile{
[[ZMAliOSSManager shareManager] zm_configClient];
//NSDictionary *dic = @{@"type":@"0"};
//NSDictionary *dic1 = @{@"type":@"1",@"dates":@[@"2018-10-11",@"2018-10-09"]};
NSDictionary *dic2 = @{@"type":@"2"};
//上传后文件的名称
NSString *upFileNameStr = @"ZMDemo压缩包测试";
[[LogManager sharedInstance] zm_uploadZipFile:dic2 upFileName:upFileNameStr];
}///3、根据上传文件的大小上传文件
-(void)testCalcuUpdateFile{
[[ZMAliOSSManager shareManager] zm_configClient];
//获取文件路径
NSString *path = [NSString stringWithFormat:@"%@%@%@",NSHomeDirectory(),kCacheLogFilePath,@"2018-10-11"];
CGFloat file_size = [[LogManager sharedInstance] zm_calculatorFileSizeAtPath:path];
if (file_size > 1.0) {//如果文件大于1MB,则打包上传
NSDictionary *dic1 = @{@"type":@"1",@"dates":@[@"2018-10-11"]};
//上传后文件的名称
NSString *upFileNameStr = @"ZMDemo压缩包测试";
[[LogManager sharedInstance] zm_uploadZipFile:dic1 upFileName:upFileNameStr];
}else{
//上传后文件的名称
NSString *upFileNameStr = @"test[2018-10-11]";
[[ZMAliOSSManager shareManager] zm_putResourceWithLocalFilePath:path fileName:upFileNameStr response:^(BOOL isSuccess, NSString *resultUrl) {
if (isSuccess == YES) {
NSLog(@"上传文件成功");
}
}];
}
}///4、上传隔天上一个的日志文件
-(void)testUpdateTodayBeforeADayFile{
[[ZMAliOSSManager shareManager] zm_configClient];
NSString *fileName = [[LogManager sharedInstance] zm_getUpdateLogFileName];
[[LogManager sharedInstance] zm_updateFileWithUpName:fileName];
}#pragma mark - lazyload-(ZMLogView *)logView{
if (!_logView) {
_logView = [ZMLogView initLogView];
[self.view addSubview:_logView];
}
return _logView;
}- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}@end
二、实现步骤
是不是发现很好用,让我们来看看是怎么实现的吧:
1、下载【Demo】,将【ZMTools】文件夹内的所有文件导入项目。
2、创建【Podfile】工程,在[Podfile]文件中导入两个包:
#压缩文件包
pod 'ZipArchive', '1.4.0',:inhibit_warnings => true
#阿里云OSS
pod 'AliyunOSSiOS','2.10.5',:inhibit_warnings => true
3、在需要压缩上传的文件类中引入文件【ZMLogZipOssHeader.h】,
#import "ZMLogZipOssHeader.h"
在需要记录文件的文件中引入文件类【LogManager.h】。
//写入数据到本地文件
kLocalLog(@"错误信息(文件类/方法)",@"具体信息啊啊啊啊啊啊");
4、调用方法实现,见第一段代码。
三、参考链接
【iOS开发(日志记录文件及压缩上传OSS)】1、iOS开发:日志记录及AFNetworking请求
推荐阅读
- 深入理解Go之generate
- 2020-04-07vue中Axios的封装和API接口的管理
- 标签、语法规范、内联框架、超链接、CSS的编写位置、CSS语法、开发工具、块和内联、常用选择器、后代元素选择器、伪类、伪元素。
- 日志打卡
- iOS中的Block
- 记录iOS生成分享图片的一些问题,根据UIView生成固定尺寸的分享图片
- 2019-08-29|2019-08-29 iOS13适配那点事
- Hacking|Hacking with iOS: SwiftUI Edition - SnowSeeker 项目(一)
- iOS面试题--基础
- Java|规范的打印日志