<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### http log module[](http://tengine.taobao.org/book/chapter_03.html#http-log-module "永久鏈接至標題") 該模塊提供了對于每一個http請求進行記錄的功能,也就是我們見到的access.log。當然這個模塊對于log提供了一些配置指令,使得可以比較方便的定制access.log。 這個模塊的代碼位于src/http/modules/ngx_http_log_module.c,雖然這個模塊的代碼有接近1400行,但是主要的邏輯在于對日志本身格式啊,等細節的處理。我們在這里進行分析主要是關注,如何編寫一個log handler的問題。 由于log handler的時候,拿到的參數也是request這個東西,那么也就意味著我們如果需要,可以好好研究下這個結構,把我們需要的所有信息都記錄下來。 對于log handler,有一點特別需要注意的就是,log handler是無論如何都會被調用的,就是只要服務端接受到了一個客戶端的請求,也就是產生了一個request對象,那么這些個log handler的處理函數都會被調用的,就是在釋放request的時候被調用的(ngx_http_free_request函數)。 那么當然絕對不能忘記的就是log handler最好,也是建議被掛載在NGX_HTTP_LOG_PHASE階段。因為掛載在其他階段,有可能在某些情況下被跳過,而沒有執行到,導致你的log模塊記錄的信息不全。 還有一點要說明的是,由于nginx是允許在某個階段有多個handler模塊存在的,根據其處理結果,確定是否要調用下一個handler。但是對于掛載在NGX_HTTP_LOG_PHASE階段的handler,則根本不關注這里handler的具體處理函數的返回值,所有的都被調用。如下,位于src/http/ngx_http_request.c中的ngx_http_log_request函數。 [](http:// "點擊提交Issue,反饋你的意見...") static void ngx_http_log_request(ngx_http_request_t *r) { ngx_uint_t i, n; ngx_http_handler_pt *log_handler; ngx_http_core_main_conf_t *cmcf; cmcf = ngx_http_get_module_main_conf(r, ngx_http_core_module); log_handler = cmcf->phases[NGX_HTTP_LOG_PHASE].handlers.elts; n = cmcf->phases[NGX_HTTP_LOG_PHASE].handlers.nelts; for (i = 0; i < n; i++) { log_handler[i](r); } }
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看