IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> iOS OC版轻量日志的实现 -> 正文阅读

[移动开发]iOS OC版轻量日志的实现

iOS项目记录日志的需求

  1. 可以在代码上控制日志的级别,以便打印不同层级的日志
  2. 需要同时在控制台、文件写入
  3. 需要和NSLog一样的调用格式,方便替换
  4. 需要保证顺序写入,不能发生由于并发写入错误的问题
  5. 以后可以扩展输入到别的地方,比如浏览器、app内其他UI上显示日志等
  6. 日志文件大小限定、设定清理N天前的日志

解决思路

  1. 设计LogLevel,能够实现 类似LogCat的效果。预计只设计NONE、ERROR、INFO、DEBUG。分别表示

    -  NONE      什么都不打印
    -  ERROR     只打印ERROR
    -  INFO      打印INFO和ERROR
    -  DEBUG     全部打印
    
  2. 利用iOS的本地广播通知的功能,在打印日志的接口里,将最终的字符串从广播发出去。在不同的文件日志类、控制台类、其他UI界面注册此通知,分别处理字符串。这同时解决了扩展性的问题。

  3. 实现OC语言风格的可变参数 以及 C语言风格的日志打印接口

  4. 本地广播,在接收的对象处理的时候天然就是顺序的了,不会有多线程的竞争问题

  5. 每次写完文件日志,检查日志文件大小,超过重新创建新文件。每次启动对象检查是否有过期文件,有则删除

知识点

  1. 本地广播的发送API
  2. 可变参数方法:写文件 vfprintf、控制台 vprintf
  3. NSString 转 char*
  4. GCD串行队列
  5. OC类实现类似NSLog风格的API,并且也能够被C语言调用
  6. 日志存储路径 Document 以及查询日志文件的修改日期、大小等API

实现代码:(待续)

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-10-02 14:59:33  更:2021-10-02 15:00:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:38:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码