openresty 前端开发入门六之调试篇
####大多数情况下,调试信息,都可以通过ngx.say打印出来,但是有的时候,我们希望打印调试日志,不影响到返回数据,所以系统打印到其它地方,比如日志文件,或者控制台
这里主要用到一个方法就是ngx.log,这个方法可以将日志输出到error.log里面,支持多种级别消息,如下:
```
ngx.STDERR
ngx.EMERG
ngx.ALERT
ngx.CRIT
ngx.ERR
ngx.WARN
ngx.NOTICE
ngx.INFO
ngx.DEBUG
```
可以通过以下方式输出调试信息,大多数情况下我们只要使用一个来输出我们的调试信息就好了,比如ngx.ALERT,我就比较喜欢这个,并且设置为我的idealivetemplate了,只需要sout+TAB就可以输出,关于idea有很多玩法,有时间可以分享给大家,就里就不说了
lua/hello.lua
```
ngx.say('printtobrowser')
ngx.log(ngx.ALERT,'printtoerror.log')
ngx.log(ngx.STDERR,'printtoerror.log')
ngx.log(ngx.EMERG,'printtoerror.log')
ngx.log(ngx.ALERT,'printtoerror.log')
ngx.log(ngx.CRIT,'printtoerror.log')
ngx.log(ngx.ERR,'printtoerror.log')
ngx.log(ngx.WARN,'printtoerror.log')
ngx.log(ngx.NOTICE,'printtoerror.log')
ngx.log(ngx.INFO,'printtoerror.log')
ngx.log(ngx.DEBUG,'printtoerror.log')
```
然后用浏览器访问http://localhost/lua/hello查看浏览器输出,还有logs/error.log文件输出,就能明白大概的意思了,也不用过多解释
####还有一种就是直接调用lua的print方法,进行输出,这个方法默认也会输出到error.log,默认输出级别是NOTICE,但是需要编译openresty的时候加上debug参数,如果是下载的windows预编译版本的话,默认没有debug,所以部分信息可能看不到,有需要可以自己编译一个
###还有就是lua运行时报错信息捕获,原因可能是语法问题,或者空指针等等,导致500错误的,这些错误日志都会输出在error.log里面,可以用tail命令实时查看,也可以通过封装然后采用pcall的调用形式,进行函数调用,这样就不会出现500,可以根据执行成败,将结果输出到客户端,做到像php那样所见即所得,可以大大提高我们的开发效率,这个后面我会通过封装一个轻量级框架来介绍,这里就先不讲了,有兴趣的同学可以了解一下
[示例代码](https://github.com/362228416/openresty-web-dev)参见demo6部分