DDLog 使用小记

作者: 尘絮缘12138 | 来源:发表于2015-12-17 04:14 被阅读1371次

    一般来说,我们在调试iOS程序时,要么用NSLog打印出变量信息或者内存信息(刚学iOS很爱这么干);或者debug加断点。单纯的debug个人觉得这两个其实都够用,但是在一个项目里,这两种方式不一定够用.

    举例来说,你的app希望上报数据到服务器,怎么实现呢?自己组装NSData? 没必要,使用DDLog不仅可以满足日常调试之需,也能记录到文件中,通过一定方式发送到服务器,例如email(引入MessageUI框架)。下面我们先简单介绍下DDLog,之后的一篇会介绍如何将DDFileLogger中的内容以邮件附件形式发送到email.

    使用DDLog

    1. 下载DDLog,github地址

    2. 添加框架

      1. DDLog(基础框架)

      2. DDASLLogger (发送到苹果的日志系统,他们显示到控制台上)

      3. DDTTYLoyger (发送日志语句到控制台)

      4. DDFileLoger (把输出信息写进文件中)

    DDLog是强制性的,其余的都是可选的,这取决于你如何打算使用这个框架,如果你不打算纪录到一个文件,你可以跳过DDFileLogger,或者你想跳过ASl 在你的爱好快速纪录日志,你可以跳过DDASLLoger.

    配置自己的DDLog

    + (void)config{
      [DDLog addLogger:[DDASLLogger sharedInstance]];
      [DDLog addLogger:[DDTTYLogger sharedInstance]];
    
      [[DDTTYLogger sharedInstance] setColorsEnabled:YES];
      [[DDTTYLogger sharedInstance] setForegroundColor:[UIColor greenColor]     backgroundColor:nil       
      forFlag:LOG_FLAG_INFO];
      [DDLog addLogger:[WQLog logManager].fileLogger];
      }
    

    <br />

    + (instancetype)logManager{
      static dispatch_once_t once;
      static WQLog *_logManager = nil;
      dispatch_once(&once,^{
         _logManager = [[self alloc] init];
      });
      return _logManager;
     }  
    

    <br />

    - (instancetype)init
    {
      self = [super init];
      if (self) {
        self.fileLogger = [[DDFileLogger alloc] init];
        self.fileLogger.rollingFrequency = 60 * 60 * 24; // 24 hour rolling
        self.fileLogger.logFileManager.maximumNumberOfLogFiles = 7;
        [self.fileLogger setLogFormatter:[[WQLogFormatter alloc] init]];
        self.fileLogger.maximumFileSize = 1024 * 1024 * 4;
      }
        return self;
    }       
    

    利用类方法初始化你需要的log服务,设置log文件数,大小等等.

    DDLog级别日志

    DDLog默认有四种级别的日志,你所要做的就是决定使用那种日志级别来打印你的日志语句,它们分别是:

    1. DDlogError
    2. DDlogWarn
    3. DDlogInfo
    4. DDlogVerbose
    

    你也可以自定义级别,你可以添加上更细微的控制代替系统四个简单的等级。当然你选择那个NSLog语句,这取决于你的消息的严重程度。

    下面的这些不同的日志等级也许正有你所需要的

    如果你设置的日志级别为 LOG_LEVEL_ERROR那么你只会看到DDlogError语句的输出。
    如果你将日志的级别设置为LOG_LEVEL_WARN那么你只会看到DDLogError和DDLogWarn语句。
    如果您将日志级别设置为 LOG_LEVEL_INFO,您将看到error、Warn和信息报表。
    如果您将日志级别设置为LOG_LEVEL_VERBOSE,您将看到所有DDLog语句。
    如果您将日志级别设置为 LOG_LEVEL_OFF,你不会看到任何DDLog语句。

    我的处理是打印DDlogInfo,他会自动写到file中.

    使用DDLog Formatter

    很多时候我们需要上报用户使用的log,太丑的log不易分析和浏览,所以我们利用DDLog的formatter规范化这些输出.

    1. 自定义formatter,继承自NSObject,实现DDLogFormatter接口协议。

    2. 实现formatLogMessage方法,在这个方法里你可以规定输出格式

      - (NSString *)formatLogMessage:(DDLogMessage *)logMessage{
         NSString *path = [NSString stringWithCString:logMessage->file encoding:NSASCIIStringEncoding];
         NSString *fileName = [path lastPathComponent];
         NSString *functionName = [NSString stringWithCString:logMessage->function encoding:NSASCIIStringEncoding];
      
         return [NSString stringWithFormat:@"%@-%@(%d): %@", fileName, functionName, logMessage->lineNumber, logMessage->logMsg];
      }

    相关文章

      网友评论

      • 来宝:你好,可以给个demo不

      本文标题:DDLog 使用小记

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