iOS打印日志到远端服务器

682 查看

iOS利用系统工具获取DeviceLog不是一件很方便的事,有时候我们运行的一些状态不一定显示在屏幕上,但是我们需要得到这一刻的一些数据。比如我们现在的产品人员要测试统计,比如按下某个按钮发送统计事件,整个界面上能够看到的也只是网络的菊花转了一圈,不能实质的看到统计的内容,并且在后台查询统计也不太容易,以及后台会有一定的延时等等原因,所以我做了一个工具,专门用于产品人员去测试一些客户端发送的某种类型的日志。

该工具的主要原理很简单,使用Socket搭了一个简易的HTTPServer,客户端可以使用二维码扫描获取服务器信息,然后存储起来,以后在需要的时候,给这个给这个HTTPServer发送HTTP请求就可以了,每次HTTPServer根据客户端所传的参数(内容/字体颜色/字体大小)去将客户端所传的内容展示在页面上就可以了。

应用主界面如图所示

主界面还是比较简单的,二维码的信息主要是存储当前服务器的访问地址,字体大小就是正文的默认字体大小,关闭则表示关闭服务器。

我们打开LogServer之后,就代表启动了HTTPServer,这时候如果我们通过浏览器进行一次HTTP请求,我们会把请求的内容打印到我们的HTTPServer上。假设我们请求如下

http://127.0.0.1:10304/?parameter=STTestLogServer&color=ff0000

我们就可以看到我们的LogServer中打印出来了一行字,为红色的STTestLogServer, 如图所示: 

PS. 服务器默认端口号为10304, parameter就是我们要打印的内容,color则表示颜色,如果传入了font=16的话,则表示字体大小为16

工具的使用很简单,只需要客户端发送HTTP请求就可以了,对于客户端,我这边也封装好了一些逻辑,可以直接使用。有关二维码的扫描部分,是使用系统自带的AVFoundation,目前只支持iOS7以上,我直接贴下载地址了,就不粘贴到这里了,当然这个二维码只是工具,方便客户端记住服务端的信息,使用其他方式也可以,可以点此处下载STQRCode。同时,我也封装了几个方法,用于更方便的将日志打印粗来,网络库大家可以任意替换,目前服务器支持GET/POST请求(暂不支持mutilpart)。

扫描二维码部分

我习惯把一些测试功能加到window的摇一摇上,这样方便。最后运行结果如下:

这个工具只是提供一种功能,代码写的也比较粗糙,只为抛砖引玉。有兴趣的可以私我,大家一起完善Server端。 STLogServer下载地址

PS.该Server是使用Java写的,所以需要Java虚拟机来支持程序的运行,大家需要自行安装JRE。 JRE官方下载地址