博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
openresty 前端开发入门六之调试篇
阅读量:6152 次
发布时间:2019-06-21

本文共 1373 字,大约阅读时间需要 4 分钟。

大多数情况下,调试信息,都可以通过ngx.say打印出来,但是有的时候,我们希望打印调试日志,不影响到返回数据,所以系统打印到其它地方,比如日志文件,或者控制台

这里主要用到一个方法就是ngx.log,这个方法可以将日志输出到error.log里面,支持多种级别消息,如下:

ngx.STDERRngx.EMERGngx.ALERTngx.CRITngx.ERRngx.WARNngx.NOTICEngx.INFOngx.DEBUG

可以通过以下方式输出调试信息,大多数情况下我们只要使用一个来输出我们的调试信息就好了,比如ngx.ALERT,我就比较喜欢这个,并且设置为我的idea live template了,只需要sout + TAB 就可以输出,关于idea有很多玩法,有时间可以分享给大家,就里就不说了

lua/hello.lua

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

然后用浏览器访问 查看浏览器输出,还有 logs/error.log 文件输出,就能明白大概的意思了,也不用过多解释

还有一种就是直接调用lua的print方法,进行输出,这个方法默认也会输出到error.log,默认输出级别是NOTICE,但是需要编译openresty的时候加上debug参数,如果是下载的windows预编译版本的话,默认没有debug,所以部分信息可能看不到,有需要可以自己编译一个

当然nginx里面还可以配置error日志级别,如下

error_log  logs/error.log  notice;

这句默认会在nginx.conf文件里面,只是注释掉了而已,只要打开注释就可以了,这样我们就可以直接通过print来输出日志了,完全是lua自带的函数,很多代码拿过来就可以直接使用

还有就是lua运行时报错信息捕获,原因可能是语法问题,或者空指针等等,导致500错误的,这些错误日志都会输出在error.log里面,可以用tail命令实时查看,也可以通过封装然后采用pcall的调用形式,进行函数调用,这样就不会出现500,可以根据执行成败,将结果输出到客户端,做到像php那样所见即所得,可以大大提高我们的开发效率,这个后面我会通过封装一个轻量级框架来介绍,这里就先不讲了,有兴趣的同学可以了解一下

参见demo6部分

转载地址:http://sewfa.baihongyu.com/

你可能感兴趣的文章
在OSCHINA上的第一篇博文,以后好好学习吧
查看>>
Spring常用注解
查看>>
我的友情链接
查看>>
PCS子层有什么用?
查看>>
查看端口,关闭端口
查看>>
linux:yum和apt-get的区别
查看>>
Sentinel 1.5.0 正式发布,引入 Reactive 支持
查看>>
数据库之MySQL
查看>>
2019/1/15 批量删除数据库相关数据
查看>>
数据类型的一些方法
查看>>
Mindjet MindManager 2019使用教程:
查看>>
详解 CSS 绝对定位
查看>>
AOP
查看>>
NGUI Label Color Code
查看>>
.NET Core微服务之基于Polly+AspectCore实现熔断与降级机制
查看>>
vue组件开发练习--焦点图切换
查看>>
浅谈OSI七层模型
查看>>
Webpack 2 中一些常见的优化措施
查看>>
移动端响应式
查看>>
python实现牛顿法求解求解最小值(包括拟牛顿法)【最优化课程笔记】
查看>>