• iOS 日志管理异常捕获组件LFLogManager


    一、功能

    1.分级打印保存

    解决一大堆重要、不重要打印信息在控制台混为一团的尴尬局面。可设置仅打印某级别及以上的信息。分为5类打印:

    DDLogError(@"打印并保存特别重要信息");
    DDLogWarn(@"打印并保存重要信息");
    DDLogInfo(@"打印并保存一般信息");
    DDLogDebug(@"打印并保存很一般信息");
    DDLogVerbose(@"打印并保存无足挂齿信息");

    2.日志浏览与删除及设置打印级别

    可视化界面都封装好了,无需动手

    只需要跳到LFLogListController这个界面即可,这些功能都在这个界面做好了。

    LFLogListController *vc = [[LFLogListController alloc] init];
    [self.navigationController pushViewController:vc animated:YES];

    说明:比如设置打印级别为DDLogLevelInfo时则只打印保存DDLogLevelInfo及以上级别的信息

    3.捕获异常崩溃并保存日志

    使用者不用管,自动记录的

    4.自定义打印级别和日志存储路径

    见下面使用中的介绍

    二、使用

    1. pod 'LFKit/Component/LFLogManager'或源码拖进工程

    2.在pch文件中加入这些

    #import <CocoaLumberjack/DDLog.h>
    extern DDLogLevel ddLogLevel;
    
    //自定义log1(如果不自定义log级别和文件路径,则不需要下面代码)
    #define LFLOG_LEVEL1 (1 << 5) #define LFLOG_LEVEL2 (1 << 6) #define LFLog1(frmt, ...) LOG_MAYBE(YES, ddLogLevel, (1 << 0), LFLOG_LEVEL1, __PRETTY_FUNCTION__,frmt, ## __VA_ARGS__) #define LFLog2(frmt, ...) LOG_MAYBE(YES, ddLogLevel, (1 << 1), LFLOG_LEVEL2, __PRETTY_FUNCTION__,frmt, ## __VA_ARGS__)
    //自定义log2(如果不自定义log级别和文件路径,则不需要下面代码) #define XXLOG_LEVEL1 (1 << 7) #define XXLOG_LEVEL2 (1 << 8) #define XXLog1(frmt, ...) LOG_MAYBE(YES, ddLogLevel, (1 << 0), XXLOG_LEVEL1, __PRETTY_FUNCTION__,frmt, ## __VA_ARGS__) #define XXLog2(frmt, ...) LOG_MAYBE(YES, ddLogLevel, (1 << 1), XXLOG_LEVEL2, __PRETTY_FUNCTION__,frmt, ## __VA_ARGS__)

    3.在应用启动时加如下代码

    [LFLogManager shareInstance].maximumFileSize = 1024;
        
    [[LFLogManager shareInstance] install];
    //自定义log1(如果不自定义log级别和文件路径,则不需要下面代码) NSArray
    *paths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *baseDir = ([paths count] > 0) ? [paths objectAtIndex:0] : nil; NSString *filePath = [baseDir stringByAppendingPathComponent:@"Logs/LFLog"]; [[LFLogManager shareInstance] installWithLevels:@[@(LFLOG_LEVEL1),@(LFLOG_LEVEL2)] path:filePath];
    //自定义log2(如果不自定义log级别和文件路径,则不需要下面代码) NSArray
    *paths2 = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES); NSString *baseDir2 = ([paths2 count] > 0) ? [paths2 objectAtIndex:0] : nil; NSString *filePath2 = [baseDir2 stringByAppendingPathComponent:@"Logs/LFLog2"]; [[LFLogManager shareInstance] installWithLevels:@[@(XXLOG_LEVEL1),@(XXLOG_LEVEL2)] path:filePath2];

    说明:

    这只是LFKit的一个子库,LFKit地址https://github.com/zhanglinfeng/LFKit

    需要LFKit中所有自定义控件的pod 'LFKit/Component'

    需要总库的 pod 'LFKit'

  • 相关阅读:
    变量的解构赋值
    vue-progressbar 知识点
    <script>标签里的defer和async属性 区别(待补充)
    管理node.js版本的模块:n
    node 知识点
    让node支持es模块化(export、import)的方法
    jvm 知识点
    前端 术语
    js的严格模式
    commonJS、AMD、es模块化 区别(表格比较)
  • 原文地址:https://www.cnblogs.com/zhanglinfeng/p/8407106.html
Copyright © 2020-2023  润新知