遠程調試
ThinkPHP5.0版本開始,提供了Socket日志驅(qu)動用(yong)于本(ben)地和遠程調試。
Socket調試
只需要在配(pei)置文(wen)件(jian)中設置如下:
'log' => [
'type' => 'socket',
'host' => 'slog.thinkphp.cn',
//日志強(qiang)制記(ji)錄到配(pei)置的(de)client_id
'force_client_ids' => [],
//限(xian)制允許(xu)讀(du)取(qu)日志(zhi)的client_id
'allow_client_ids' => [],
]
上面的(de)host配(pei)置地址是官方提供的(de)公用服務端,首先需要去(qu) 。
使用Chrome瀏覽器運行后,打開審查元素->Console,可以看到如下所示:

SocketLog通過websocket將調試日志打印到瀏覽器的console中。你還(huan)可(ke)以用它來(lai)分(fen)析開源程序,分(fen)析SQL性能,結合taint分(fen)析程序漏洞。
安裝Chrome插件
SocketLog首先需要安裝chrome插件,Chrome (需翻墻)
使用方法
- 首先,請在chrome瀏覽器上安裝好插件。
-
安裝服務端
npm install -g socketlog-server, 運行命令socketlog-server即可啟動服務。 將會在本地起一個websocket服務 ,監聽端口是1229 。 -
如果想服務后臺運行:
socketlog-server > /dev/null &
參數
-
client_id: 在chrome瀏覽器中,可以設置插件的Client_ID,Client_ID是你任意指定的字符串。

-
設置
client_id后能實現以下功能: -
1,配置
allow_client_ids配置項,讓指定的瀏覽器才能獲得日志,這樣就可以把調試代碼帶上線。 普通用戶訪問不會觸發調試,不會發送日志。 開發人員訪問就能看的調試日志, 這樣利于找線上bug。 Client_ID 建議設置為姓名拼音加上隨機字符串,這樣如果有員工離職可以將其對應的client_id從配置項allow_client_ids中移除。client_id除了姓名拼音,加上隨機字符串的目的,以防別人根據你公司員工姓名猜測出client_id,獲取線上的調試日志。 -
設置allow_client_ids示(shi)例代碼:
'allow_client_ids'=>['thinkphp_zfH5NbLn','luofei_DJq0z80H'], -
2, 設置
force_client_ids配置項,讓后臺腳本也能輸出日志到chrome。 網站有可能用了隊列,一些業務邏輯通過后臺腳本處理, 如果后臺腳本需要調試,你也可以將日志打印到瀏覽器的console中, 當然后臺腳本不和瀏覽器接觸,不知道當前觸發程序的是哪個瀏覽器,所以我們需要強制將日志打印到指定client_id的瀏覽器上面。 我們在后臺腳本中使用SocketLog時設置force_client_ids配置項指定要強制輸出瀏覽器的client_id即可。

