1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chenzm_186-ZMLogZipUpdateDemo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
README.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 25.11.2024 04:00 4f1e162

LogZipUpdateDemo

一、简述

Обнаружено, что загрузка локальных файлов журналов очень полезна. Основываясь на предыдущих исследованиях и изучении этого модуля, были проведены некоторые конкретные оптимизации (https://gitee.com/chenzm_186/ZMLogZipUpdateDemo). Из заголовка видно, что реализация этой функции включает в себя следующие шаги:

  1. Запись журнала в локальный файл.
  2. Сжатие файла журнала [xxx.zip].
  3. Загрузка сжатого файла.
  4. Удаление сжатых файлов.

Здесь представлен демонстрационный пример (Demo), где файлы журнала записываются в файл LogManager, а файлы журнала загружаются в ZMAliOSSManager. Для загрузки файлов журнала я использовал простую реализацию, не выполняя аутентификацию или другие методы загрузки, но соответствующие методы реализации были интегрированы, и я надеюсь, что они будут полезны для тех, кто в них нуждается. Конечно, это не влияет на мою реализацию функций, ниже приведены несколько примеров моей реализации функций:

//
//  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](https://download.csdn.net/download/weixin_38633659/10715348)).
 2. Создайте файл Podfile для проекта и добавьте два пакета в файл Podfile:
 ```oc
 #压缩文件包
 pod 'ZipArchive', '1.4.0',:inhibit_warnings => true
 #阿里云OSS
 pod

*Примечание: данный перевод может содержать неточности.* АлиюнОуСиАйОС, 2.10.5, :inhibit_warnings => true

3. В класс файлов, которые необходимо сжать перед загрузкой, необходимо включить файл ZMLogZipOssHeader.h:  
```oc
#import "ZMLogZipOssHeader.h"

В класс файлов, где требуется регистрировать файлы, необходимо включить класс LogManager.h.

//Запись данных в локальный файл  
kLocalLog(@"Ошибка (класс файла/метод)",@"Конкретная информация");  
  1. Вызов метода для реализации, см. первый фрагмент кода.

Три. Ссылки для справки

  1. iOS-разработка: журнал регистрации и запросы AFNetworking

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chenzm_186-ZMLogZipUpdateDemo.git
git@api.gitlife.ru:oschina-mirror/chenzm_186-ZMLogZipUpdateDemo.git
oschina-mirror
chenzm_186-ZMLogZipUpdateDemo
chenzm_186-ZMLogZipUpdateDemo
master