调试

框架中有两种调试方式,一种是在页面控制台中输出的调试,方便用户对应网页调试。

另一种则是和其他框架一样,在日志中调试

控制台调试

KaliPHP 的一大特色既是这控制台调试方式,通过Chrome logger扩展,用户可以调试自己想要的数据,同时也不会对当前的页面结构产生影响。

调试的开关在/web/index.php

扩展安装地址:https://chrome.google.com/extensions/detail/noaneddfkdjfnfdakjjmocngnfkfehhd

// console调试开关,关闭后控制台不会输出内容
defined('SYS_CONSOLE') or define('SYS_CONSOLE', true);

控制台调试的方式,同步异步都可以调试,因为调试信息是在http header信息里面,所以异步ajax的请求也会把调试信息输出在控制台里了,并不会污染json数据。

调试方式很简单,全局可以调用log::info($message, $context),另外还有warn,error,debug等

第一个参数为想要调试的内容,同时也支持数组,Object类的输出。第二个参数为信息扩展,一般是信息分类,比如:SQL Error、IP地址、当前调用方法__method__,然后通过grep即可进行日志筛选查询:grep -rIn "SQL Query" debug.log

log::info()消息 输出

log::notice()提示 输出

log::debug()调试 输出

log::warning()警告 输出

log::error()异常 输出

下面是一个简单例子,和控制台的输出结果。结果会因为浏览器不一样而样式不同,效果上是一样的。

// 以下代码全局都可以使用
log::info('order start');
// 可以传数组,也可以传对象,对象会先转化为数组,再转化为json字符串
log::notice(array('cc'=>'dd'));                     
// debug里面很多信息,SQL Query分类一下,日志查询可以用 grep -rIn "SQL Query" debug.log
log::debug('SELECT * FROM `user`', 'SQL Query');    
log::error('this is a error');
log::warning('ss');

另外log调试类中还支持time,memory的输出,信息会输出到debug.log,可以使用其对代码性能做优化。

// 开始结尾处加上时间 和 memory 就可以获取中间程序消耗的性能了
log::time('start-time');
log::memory('start-memory');
log::debug('do something');
log::time('end-time');
log::memory('end-memory');

日志调试

平台的日志目录在data/log/,请确保该目录有写权限

记录会生成在{错误类型}.log文件中,如:info.logdebug.logwarn.logerror.log

系统程序错误也都会在error日志中显示,如页面出现500时可在错误日志中查看定位

Last updated