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

OSCHINA-MIRROR/chenzm_186-ZMLogZipUpdateDemo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
В этом репозитории не указан файл с открытой лицензией (LICENSE). При использовании обратитесь к конкретному описанию проекта и его зависимостям в коде.
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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. Локальный файл журнала регистрации. 2. Сжатие файлов. 3. Загрузка файлов. 4. Загрузка сжатых файлов. 5. Загрузка файлов на сервер облачного хранилища Alibaba Cloud. Развернуть Свернуть
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
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