希望對(duì)接口的邏輯流程做日志記錄,控制器請(qǐng)求 -> 數(shù)據(jù)庫操作 -> 控制器響應(yīng) 等一塊內(nèi)容記錄在一個(gè)文件中。
針對(duì)以上,該如何實(shí)現(xiàn),大家有沒有好的想法,謝教。
有想法,不過我自己沒試過.給個(gè)思路你去實(shí)現(xiàn)看看.
建一個(gè)靜態(tài)類,在中間件開始 生成一個(gè)uuid,存到靜態(tài)類里面去
在 bootstrap 里面
Db::listen(function(){
讀取靜態(tài)類uuid,有uuid就把sql寫入靜態(tài)類里去
})
在中間件響應(yīng)那,讀取靜態(tài)類里面sql并且清掉uuid.
目前所實(shí)現(xiàn)的:
因?yàn)?數(shù)據(jù)庫監(jiān)聽是針對(duì)所有數(shù)據(jù)庫操作, 和 控制的邏輯按順序處理響應(yīng) 是不同的,所以在并發(fā)情況下,記錄寫入會(huì)存在問題,所以在每個(gè)記錄處都顯式的記錄了uuid便于對(duì)應(yīng)。但顯然這個(gè)方案是無法使用的。
我再去研究下。
你所說的的并發(fā)無效是錯(cuò)誤的,數(shù)據(jù)庫監(jiān)聽是針對(duì)當(dāng)前進(jìn)程的數(shù)據(jù)庫操作,而不是所有的數(shù)據(jù)庫操作,所以,當(dāng)并發(fā)時(shí),當(dāng)前進(jìn)程監(jiān)聽的只能是當(dāng)前進(jìn)程執(zhí)行的sql.然而webman是同步阻塞的,當(dāng)前進(jìn)程只能執(zhí)行一個(gè)請(qǐng)求,我并沒看到有哪里會(huì)導(dǎo)致無法使用.