国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

如何對(duì)接口內(nèi)的邏輯流程做日志記錄(請(qǐng)求響應(yīng)及數(shù)據(jù)庫(kù))

Caesar-Tang

希望對(duì)接口的邏輯流程做日志記錄,控制器請(qǐng)求 -> 數(shù)據(jù)庫(kù)操作 -> 控制器響應(yīng) 等一塊內(nèi)容記錄在一個(gè)文件中。

  1. 在 middleware 中,可記錄控制的請(qǐng)求及響應(yīng),但在此處使用數(shù)據(jù)庫(kù)監(jiān)聽(tīng),數(shù)據(jù)庫(kù)語(yǔ)句會(huì)累計(jì)增加
  2. 在 bootstrap 中,可記錄數(shù)據(jù)庫(kù)語(yǔ)句,但無(wú)法知道它來(lái)源于哪個(gè)控制器

針對(duì)以上,該如何實(shí)現(xiàn),大家有沒(méi)有好的想法,謝教。

1510 4 0
4個(gè)回答

2548a

有想法,不過(guò)我自己沒(méi)試過(guò).給個(gè)思路你去實(shí)現(xiàn)看看.

建一個(gè)靜態(tài)類,在中間件開(kāi)始 生成一個(gè)uuid,存到靜態(tài)類里面去

在 bootstrap 里面
Db::listen(function(){
讀取靜態(tài)類uuid,有uuid就把sql寫(xiě)入靜態(tài)類里去
})

在中間件響應(yīng)那,讀取靜態(tài)類里面sql并且清掉uuid.

  • tanhongbin 2022-09-09

    我現(xiàn)在也在考慮這個(gè)問(wèn)題呢,也是想著在中間件中處理這些,就是不好拿sql,數(shù)據(jù)好拿

evilk

老大不是專門(mén)寫(xiě)了一個(gè)webman日志插件嗎?
去看看那個(gè)插件

Caesar-Tang

目前所實(shí)現(xiàn)的:
截圖

  • tanhongbin 2022-09-09

    這個(gè)可以呀,兄弟是怎么實(shí)現(xiàn)的,按照群主的哪個(gè)搞得嘛?

  • Caesar-Tang 2022-09-09
    1. 使用全局中間件,在請(qǐng)求處理前,生成一個(gè)uuid,傳參給控制器,如:$request->requestId = $uuid
    2. 在 bootstrap 的數(shù)據(jù)庫(kù)監(jiān)聽(tīng)中,通過(guò) request 助手函數(shù)判斷當(dāng)前是否有 requestId 對(duì)象并且不為空,如:!empty(request()->requestId)
    3. 使用 Log 在中間件和監(jiān)聽(tīng)處記錄日志

    因?yàn)?數(shù)據(jù)庫(kù)監(jiān)聽(tīng)是針對(duì)所有數(shù)據(jù)庫(kù)操作, 和 控制的邏輯按順序處理響應(yīng) 是不同的,所以在并發(fā)情況下,記錄寫(xiě)入會(huì)存在問(wèn)題,所以在每個(gè)記錄處都顯式的記錄了uuid便于對(duì)應(yīng)。但顯然這個(gè)方案是無(wú)法使用的。

    我再去研究下。

  • 2548a 2022-09-09

    你所說(shuō)的的并發(fā)無(wú)效是錯(cuò)誤的,數(shù)據(jù)庫(kù)監(jiān)聽(tīng)是針對(duì)當(dāng)前進(jìn)程的數(shù)據(jù)庫(kù)操作,而不是所有的數(shù)據(jù)庫(kù)操作,所以,當(dāng)并發(fā)時(shí),當(dāng)前進(jìn)程監(jiān)聽(tīng)的只能是當(dāng)前進(jìn)程執(zhí)行的sql.然而webman是同步阻塞的,當(dāng)前進(jìn)程只能執(zhí)行一個(gè)請(qǐng)求,我并沒(méi)看到有哪里會(huì)導(dǎo)致無(wú)法使用.

  • Caesar-Tang 2022-09-09

    如下圖

Caesar-Tang

寫(xiě)入問(wèn)題,如下圖:
截圖

  • 2548a 2022-09-09

    我現(xiàn)在沒(méi)空,晚上或者后天我會(huì)自己寫(xiě)一個(gè)測(cè)試看看的.

  • nitron 2022-09-09

    寫(xiě)入不是順序的問(wèn)題不大啊,requestId不就是為了做過(guò)濾的么

    cat abc.log | grep 'request-id'

    就可以看到單次請(qǐng)求的全過(guò)程

  • nitron 2022-09-09

    單個(gè)worker的寫(xiě)入是順序的,但是各個(gè)worker之間不是順序的,很正常

  • 2548a 2022-09-11

    我在自己項(xiàng)目本地加上去測(cè)過(guò)了,一秒內(nèi)十幾個(gè)請(qǐng)求,我沒(méi)看到有一個(gè)sql 串了請(qǐng)求的.

  • nitron 2022-09-11

    要復(fù)現(xiàn)也簡(jiǎn)單,開(kāi)2worker,一個(gè)worker內(nèi)處理一個(gè)長(zhǎng)耗時(shí)請(qǐng)求,一個(gè)worker處理多個(gè)短耗時(shí)請(qǐng)求,這樣你就能看到了

年代過(guò)于久遠(yuǎn),無(wú)法發(fā)表回答
??