SocketLog
作为程序员,除了新功能开发之外,最常见的一个工作就是查错,尤其是远程用户的查错,还是一个很痛苦的过程。当前又加上了微信开发,API 开发等操作。对于微信内、API 由远程用户所调用的时候,情况多变,查错也更加地麻烦。这个时候,我们的第三个神器登场了。那就是 SocketLog。
SocketLog 是国内知名 PHP 开发者罗飞的作品,罗飞是 ThinkPHP 的核心开发者,也是优才学院全栈工程师主力讲师。现任三生社群 CTO。SocketLog 的 github 地址为: https://github.com/luofei614/SocketLog
,在项目的主页上,详细地介绍了用法和所用的技术。这里简单地汇总讲解一下。
SocketLog 的使用,主要要分成三个步骤,第一步是安装 Chrome 插件。可以从 github 下载的安装包中去安装,或者可以从 Chrome 应用商店下载。
第二步是需要启动 Socket 服务,Socket 服务是 WebSocket 协议的,早期版本是 PHP 编写的服务器,新的版本已经使用 Node.js 来实现了。启动方法很简单,进入解压后的目录。
执行 node server/index.js
即可。
安装好插件之后,就在 Chrome 上看到如下图标。灰色表示没有连接上。
同时启动了服务器,做好设置,就会看到图标变成蓝色了。
需要注意的是,尽管我们这里监听地址配置成了本地地址,其实也可以配置远程地址。不过远程地址的话记得打开服务器上的防火墙,因为一般1229端口在防火墙中是关闭的。
SocketLog 的原理,是在服务器端,往 WebSocket 服务器上写数据,作为客户端的 Chrome 插件,即能收到数据。所以不管是远程 API 调用,还是网页访问,只要在程序中往这个 WebSocket 服务器写了数据,只要监听了这个 Websocket 服务的客户端都能收到相应的调试日志。
第三步是埋代码。使用方法也很简单。比如我们在上面的 ThinkPHP 的 index.php 加入两行代码。会看到如下输出 。
然后我们在其他终端上也访问一下这台机器的这个页面地址,看看是否能得到输出呢?开始没有任何输出效果。因为缺省情况下是不记录普通用户所调用的 slog 的。
在 slog 之上的语句加上这一行,就有了。
slog(array('force_client_id'=>'test'),'set_config');
Test 这个插件的用户,收到了所有的 slog 消息。如下图所示:
并且这种输出 ,无论是别的用户触发,而还后台服务程序,均可以输出 。所以非常地方便,开发人员在自己的机器上就收集到了想要收集的用户所触发的调试信息。
然后为了体现对 SQL 语句的监听。我们在 ThinkPHP/Library/Think/Db/Driver.class.php
的第1139行加上 slog($str)
,然后再访问页面,就得到了如下输出 ,可见实现了对 SQL 日志的监控。
SocketLog 的功能看起来虽然简单,但是却非常有用、好用,是不可多得的开发神器。有关 SocketLog 的更多介绍和使用说明,建议现在就立刻下载,并且进入 github 主页好好地研究吧!
PHP之友评论