在我们实际开发中经常要配合测试进行debug,在真机上测试的时候很难看到控制台的输出日志。真机连接在电脑上进行测试的时候还好,但是有些功能测试的时候可能需要程序杀死重新打开。比如在测试推送功能的时候,需要测试程序在杀死的情况下收到推送怎么处理。这个时候很难看到推送内容是什么,要想根据推送内容写具体的处理逻辑就很不方便了。比如程序莫名其妙地闪退了,你想定位bug却很难看到奔溃日志?比如想查看真机上沙盒中保存的某个值?再比如测试人员在测试过程中想查看当前加载的网页的完整链接(包括自己拼接的参数等等)?😂。这个时候是不是很想来一个不影响程序的正常运行又可以实时查看打印日志的轮子😉?
这个小工具实现了以下功能:
- 每次程序启动就新建一个以当前时间命名的日志文件。
- 自定义打印日志的方法,调用后将把日志记录于文件中。
- 重定向NSLog输出日志到文件中,这样你就不用替换到你项目中已有的NSLog()代码啦。
- 重定向程序奔溃日志到文件中。
- 自动根据当前设备信息选择要不要记录日志的同时把日志打印到控制台。
- 方便查看当前沙盒中保存的键值对。
看完介绍是不是心情有点小激动甚至想“来一发”😂?
使用方法
- 将DebugWindow文件夹下的类引入你的项目。
- 在程序启动时调用
[YLDebugWindow startDebug]
方法开启日志记录。 - 如果需要自定义打印日志,调用YLLog()方法,你也可以根据自己实际情况修改该方法。
注意事项
- 建议在往沙盒中存数据的时候将所有key都带上特定前缀,比如我这里是"kYL"开头的,这样在获取沙盒中键值对的时候方便只看自己保存的键值对。
- 默认在模拟器上和真机连接在电脑上的时候是不把NSLog输出和异常输出日志记录到文件中的,如果需要在模拟器上看效果,可以修改YLLogTool的
needRedirect
方法。
目前存在的问题以及待实现功能
- 问题:重定向程序原有的NSLog输出日志中,中文显示乱码问题。目前没有找到解决办法,建议尽量用英文输出。😩
- 待实现:动态更改沙盒中保存的键值对来方便调试。
效果图
参考
总结
在真机上测试的时候快速查看日志,这一直是我实际开发中的一个需要。这个小工具是最近一周工作之余研究的结果,非常感谢网络上已有的技术文章对我的帮助和启发。如有bug或者其他建议,请在DebugWindow反馈给我,谢谢。
更新记录
---2017-05-11---
- 使用UIWebView替代QLPreviewController来预览日志文件。
- 解决中文乱码问题。
- 在日志文件中搜索并高亮字符串。
- 增删改查当前沙盒中保存的键值对,方便调试。
网友评论