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部分浏览器

相关文章
相关标签/搜索