美文网首页
iOS开发:日志记录文件及压缩上传OSS

iOS开发:日志记录文件及压缩上传OSS

作者: rattanchen | 来源:发表于2018-10-12 13:38 被阅读42次

@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、调用方法实现,见第一段代码。

三、参考链接

1、iOS开发:日志记录及AFNetworking请求

相关文章

  • iOS开发:日志记录文件及压缩上传OSS

    @TOC 一、简述 发现APP上传本地日志文件相当的好用,根据之前研究学习的对这一模块做了一些更具体的优化处理。从...

  • iOS OSS上传文件问题

    iOS OSS上传文件问题 最近接入OSS SDK做资源上传到OSS,期间遇到的一些问题,做一下记录 1. OSS...

  • 阿里云(I)

    参考资料:iOS 阿里云服务器图片上传iOS录制(或选择)视频,压缩、上传(整理)视频 拍摄 与压缩 阿里云OSS...

  • 好事多磨难

    今天工作上遇到一个比较棘手的问题。mui视频文件压缩上传到oss操作,经过研究打通文件到oss成功上传,其实可以把...

  • 阿里oss文件分片上传

    OSS文件分片上传 依赖 基础参数dto 具体上传方法 小文件上传 大文件上传,分片oss自己处理 处理逻辑:前段...

  • oss-server 小型对象存储系统

    oss-server 项目介绍 oss-server是针对项目开发时提供的小型对象存储系统,开发者在针对文件上传时...

  • Swift网络编程(二)文件上传/下载

    一.前言 iOS开发中和服务器打交道除了数据请求外,还有文件的上传及下载,OC中文件上传及下载,笔者就不多说了,今...

  • springboot jar包运行文件上传及显示

    文件上传是在web开发中所遇到的比较常见的需求了,常见的文件上传有几种 一是将文件上传到oss等类似的文件服务器上...

  • iOS 关于OSS上传文件

    1.安装OSS这些就不需要再说了,其次先让后台配置好一些参数,然后拿到后便可以直接使用了 目前用到的主要参数有以下...

  • iOS逆向学习

    参考文章:iOS逆向开发记录:iOS逆向之手机越狱iOS逆向之介绍iOS逆向之文件系统结构iOS逆向之文件权限及类...

网友评论

      本文标题:iOS开发:日志记录文件及压缩上传OSS

      本文链接:https://www.haomeiwen.com/subject/iytgaftx.html