• iOS项目之使用开关控制日志输出的功能


      最近一直在做sdk的项目,用户提出了一个需求,需要屏蔽sdk内部的日志输出。由于sdk内部的日志是为了调试,如果屏蔽了肯定不方便,所以研究了一下日志输出开关的功能。

      在这里介绍两种实现方案:一种方案是使用NSUserDefaults,一种方案是使用自定义类来控制。

      第一种方案:NSUserDefaults

      这种方案比较简单,主要使用NSUserDefaults来存储日志输出的状态。直接上代码:

     // 日志状态获取
    [[[NSUserDefaults standardUserDefaults] valueForKey:@"kLogEnable"] boolValue];
    
    
     // 日志状态修改
    NSUserDefaults *userD = [NSUserDefaults standardUserDefaults];
    [userD setValue:@(s.isOn) forKey:@"kLogEnable"];
    [userD synchronize];

      然后在.pch文件中添加宏来进行判断输出日志功能:

    #define customLogEnable   [[[NSUserDefaults standardUserDefaults] valueForKey:@"kLogEnable"] boolValue]
    
    #define FirstMethodLog(format,...)  if(customLogEnable) {
    NSLog((@"%s[%d]" format), __FUNCTION__, __LINE__, ##__VA_ARGS__);
    } else {}

      这样在其他地方使用FirstMethodLog方法来输出日志,就可以实现控制日志输出的功能。

      第二种方案:自定义日志输出管理类CustomLogManager

      首先在.h文件中提供几个方法:

    // 设置日志输出状态
    + (void)setLogEnable:(BOOL)enable;
    
    // 获取日志输出状态
    + (BOOL)getLogEnable;
    
    // 日志输出方法
    + (void)customLogWithFunction:(const char *)function lineNumber:(int)lineNumber formatString:(NSString *)formatString;

      然后在.m文件中,设置静态变量来存储日志输出状态值

    // 默认值为NO
    static BOOL kLogEnable = NO;

      类方法的实现:

    + (void)setLogEnable:(BOOL)enable {
        kLogEnable = enable;
    }
    
    + (BOOL)getLogEnable {
        return kLogEnable;
    }
    
    + (void)customLogWithFunction:(const char *)function lineNumber:(int)lineNumber formatString:(NSString *)formatString {
        
        if ([self getLogEnable]) {
            // 开启了Log
            NSLog(@"%s[%d]%@", function, lineNumber, formatString);
        }
    }

      最后添加宏定义

    #define SecondMethodLog(format,...)  [CutomLogManager customLogWithFunction:__FUNCTION__ lineNumber:__LINE__ formatString:[NSString stringWithFormat:format, ##__VA_ARGS__]]

      这样在其他地方使用SecondMethodLog方法来输出日志,就可以控制日志输出了。

      在这里附上Demo:CustomLogDemo

  • 相关阅读:
    深入理解乐观锁与悲观锁
    mysql5.7 安装常见问题
    nginx 前后分离,地址重写,url匹配中遇到的问题
    nginx rewrite
    Nginx location 配置
    Nginx高级应用之Location Url 配置
    Zookeeper的功能以及工作原理
    [PY3]——IO——文件目录操作
    [PY3]——pwd | grp 模块
    [PY3]——时间处理——datetime | calendar
  • 原文地址:https://www.cnblogs.com/sjxjjx/p/8907762.html
Copyright © 2020-2023  润新知