前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >iOS开发中Log模块的解决方案 原

iOS开发中Log模块的解决方案 原

作者头像
珲少
发布2018-08-15 11:55:13
4870
发布2018-08-15 11:55:13
举报
文章被收录于专栏:一“技”之长一“技”之长

iOS开发中Log模块的解决方案

    在软件开发中,调试模块,Log模块,可视化监控模块等都属于技术需求,并非业务需求,因此在进行这类模块的构建时,我们更多的应该以面向切面的思想来编程。例如Log模块,其往往只是在Debug模式下需要,在编写时就要注意让其可以自动适应编译环境而不需代码做切换操作。

    本篇博客主要介绍为项目添加Log模块的开发思路,并且推荐一款开源并且支持Cocoapods的Log库。

一、接口的提供

    面向切面编程的核心就是要足够简洁,不影响主体工程模块,不依赖也不引入任何其他模块的内容。Log引擎的接口设计可以全部采用宏的模式,使用预编译关键字可以十分容易的对Debug和Release环境进行分别处理,如下:

#ifndef YHDevLog
#define YHDevlOG



#ifdef DEBUG
#define START_DEBUG_MODE() [YHDevLogManager installDevLogView];
#define WARN_LOG(msg,...) [YHDevLogManager pushLog:0 format:msg,##__VA_ARGS__,nil];
#define ERROR_LOG(msg,...) [YHDevLogManager pushLog:1 format:msg,##__VA_ARGS__,nil];
#define LOG(msg,...) [YHDevLogManager pushLog:2 format:msg,##__VA_ARGS__,nil];
#else
#define START_DEBUG_MODE()
#define WARN_LOG(msg,...)
#define ERROR_LOG(msg,...)
#define LOG(msg,...)
#endif

#endif

其中,WARN_LOG,ERROR_LOG,LOG三个宏用来进行不同级别的Log打印,并且提供了格式化字符串的支持。START_DEBUG_MODE()宏用来开启模块,可以在应用程序启动完成后调用开启。

二、设计一个Model来描述Log信息

    Log信息是纯文本的,但是我们需要将其抽象成一种Model来进行描述,区分Log的级别,类型或者其他逻辑,YHDevLog中的Model设计如下:

@interface YHDevLogModel : NSObject

@property(nonatomic,strong)NSString * content;


/**
 0 warn 1 error 2 plain
 */
@property(nonatomic,assign)int type;
//是否展开详情
@property(nonatomic,assign)BOOL isOpen;

@end

三、Log窗口的设计

    关于Log窗口,我们可以采用悬浮window的方式,为了避免影响主应用功能,窗口的悬浮模式应该可以自由调整,窗口中可以使用TableView来展示Log信息,使用功能按钮来控制窗口尺寸和进行Log的分类和清空等。关于UI方面的代码,因为采用的是纯手写的Autolayout,这里就不在列举代码,有兴趣的可以再如下地址找到:

https://github.com/ZYHshao/YHDevLog

一些效果图:

使用下面的Pod可以直接使用此Log组件:

pod  'YHDevLog' 

欢迎共同探讨,一起进步! 

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • iOS开发中Log模块的解决方案
    • 一、接口的提供
      • 二、设计一个Model来描述Log信息
        • 三、Log窗口的设计
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档