版权声明:本文为ywcmoon原创文章,未经允许不得转载。 https://blog.csdn.net/qq_39251267/article/details/82499671
ThinkPHP5.0
版本开始,提供了Socket
日志驱动用于本地和远程调试
Socket调试
在配置文件中设置如下:
'log' => [
'type' => 'socket',
'host' => 'slog.thinkphp.cn',
//日志强制记录到配置的client_id
'force_client_ids' => [],
//限制允许读取日志的client_id
'allow_client_ids' => [],
]
host
配置地址官方提供的公用服务端,需申请client_id
使用Chrome
浏览器运行后,打开审查元素Console
SocketLog
通过websocket
将调试日志打印到浏览器的console
中
安装Chrome插件
SocketLog 需安装chrome插件
使用方法
- 在chrome浏览器上安装好插件
- 安装服务端:
npm install -g socketlog-server
, 启动服务:socketlog-server
。
将会在本地起一个websocket服务 ,监听端口是1229
- 如果想服务后台运行:
socketlog-server > /dev/null &
参数
在chrome浏览器设置插件的
Client_ID
(任意指定的字符串)设置 client_id 后能实现以下功能:
1.配置
allow_client_ids
:
让指定的浏览器获得日志,这样就可以把调试代码带上线。 普通用户访问不会触发调试,不会发送日志。 开发人员访问就 能看的调试日志, 这样利于找线上bug。 Client_ID 建议设置为姓名拼音加上随机字符串
//示例代码
'allow_client_ids'=>['thinkphp_zfH5NbLn','luofei_DJq0z80H'],
- 2.设置
force_client_ids
:
让后台脚本也能输出日志到chrome
网站有可能用了队列,一些业务逻辑通过后台脚本处理, 如果后台脚本需要调试,你也可以将日志打印到浏览器的console中, 当然后台脚本不和浏览器接触,不知道当前触发程序的是哪个浏览器,所以我们需要强制将日志打印到指定client_id的浏览器上面。 我们在后台脚本中使用SocketLog时设置force_client_ids 配置项指定要强制输出浏览器的client_id 即可