<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # 調試 調試是一個程序猿非常重要的能力,人寫的程序總會有bug,所以需要debug。**_如何方便和快速的定位bug_**,是我們討論的重點,只要bug能定位,解決就不是問題。 對于熟悉用Visual Studio和Eclipse這些強大的集成開發環境的來做C++和Java的同學來說,OpenResty的debug要原始很多,但是對于習慣Python開發的同學來說,又是那么的熟悉。張銀奎有本[《軟件調試》](http://book.douban.com/subject/3088353/)的書,windows客戶端程序猿應該都看過,大家可以去試讀下,看看里面有多復雜:( 對于OpenResty,壞消息是,沒有單步調試這些玩意兒(我們嘗試搞出來過ngx lua的單步調試,但是沒人用...);好消息是,它像Python一樣,非常簡單,不用復雜的技術,只靠print和log就能定位絕大部分問題,難題有[火焰圖](#)這個神器。 - #### 關閉code cache 這個選項在調試的時候最好關閉。 ~~~ lua_code_cache off; ~~~ 這樣,你修改完代碼后,不用reload nginx就可以生效了。在生產環境下記得打開這個選項。 - #### 記錄日志 這個看上去誰都會的東西,要想做好也不容易。 你有遇到這樣的情況嗎?QA發現了一個bug,開發說我修改代碼加個日志看看,然后QA重現這個問題,發現日志不夠詳細,需要再加,反復幾次,然后再給QA一個沒有日志的版本,繼續測試其他功能。 如果產品已經發布到用戶那里了呢?如果用戶那里是隔離網,不能遠程怎么辦? **_你在寫代碼的時候,就需要考慮到調試日志。_** 比如這個代碼: ~~~ local response, err = redis_op.finish_client_task(client_mid, task_id) if response then put_job(client_mid, result) ngx.log(ngx.WARN, "put job:", common.json_encode({channel="task_status", mid=client_mid, data=result})) end ~~~ 我們在做一個操作后,就把結果記錄到nginx的error.log里面,等級是warn。在生產環境下,日志等級默認為error,在我們需要詳細日志的時候,把等級調整為warn即可。在我們的實際使用中,我們會把一些很少發生的重要事件,做為error級別記錄下來,即使它并不是nginx的錯誤。 與日志配套的,你需要[logrotate](http://linuxcommand.org/man_pages/logrotate8.html)來做日志的切分和備份。
                  <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>

                              哎呀哎呀视频在线观看