openresty 前端開發入門六之調試篇

大多數狀況下,調試信息,均可以經過ngx.say打印出來,可是有的時候,咱們但願打印調試日誌,不影響到返回數據,因此係統打印到其它地方,好比日誌文件,或者控制檯

這裏主要用到一個方法就是ngx.log,這個方法能夠將日誌輸出到error.log裏面,支持多種級別消息,以下:php

ngx.STDERR
ngx.EMERG
ngx.ALERT
ngx.CRIT
ngx.ERR
ngx.WARN
ngx.NOTICE
ngx.INFO
ngx.DEBUG

能夠經過如下方式輸出調試信息,大多數狀況下咱們只要使用一個來輸出咱們的調試信息就行了,好比ngx.ALERT,我就比較喜歡這個,而且設置爲個人idea live template了,只須要sout + TAB 就能夠輸出,關於idea有不少玩法,有時間能夠分享給你們,就裏就不說了nginx

lua/hello.luagit

ngx.say('print to browser')

ngx.log(ngx.ALERT, 'print to error.log')
ngx.log(ngx.STDERR, 'print to error.log')
ngx.log(ngx.EMERG, 'print to error.log')
ngx.log(ngx.ALERT, 'print to error.log')
ngx.log(ngx.CRIT, 'print to error.log')
ngx.log(ngx.ERR, 'print to error.log')
ngx.log(ngx.WARN, 'print to error.log')
ngx.log(ngx.NOTICE, 'print to error.log')
ngx.log(ngx.INFO, 'print to error.log')
ngx.log(ngx.DEBUG, 'print to error.log')

而後用瀏覽器訪問 http://localhost/lua/hello 查看瀏覽器輸出,還有 logs/error.log 文件輸出,就能明白大概的意思了,也不用過多解釋github

還有一種就是直接調用lua的print方法,進行輸出,這個方法默認也會輸出到error.log,默認輸出級別是NOTICE,可是須要編譯openresty的時候加上debug參數,若是是下載的windows預編譯版本的話,默認沒有debug,因此部分信息可能看不到,有須要能夠本身編譯一個

固然nginx裏面還能夠配置error日誌級別,以下web

error_log  logs/error.log  notice;

這句默認會在nginx.conf文件裏面,只是註釋掉了而已,只要打開註釋就能夠了,這樣咱們就能夠直接經過print來輸出日誌了,徹底是lua自帶的函數,不少代碼拿過來就能夠直接使用windows

還有就是lua運行時報錯信息捕獲,緣由多是語法問題,或者空指針等等,致使500錯誤的,這些錯誤日誌都會輸出在error.log裏面,能夠用tail命令實時查看,也能夠經過封裝而後採用pcall的調用形式,進行函數調用,這樣就不會出現500,能夠根據執行成敗,將結果輸出到客戶端,作到像php那樣所見即所得,能夠大大提升咱們的開發效率,這個後面我會經過封裝一個輕量級框架來介紹,這裏就先不講了,有興趣的同窗能夠了解一下

示例代碼 參見demo6部分瀏覽器

相關文章
相關標籤/搜索