使用日志
- 框架配置preloaded加入"of_base_error_writeLog"启动
- 开发模式时, 产生错误会有明显的提示
- 生产模式时, 加$_REQUEST['__of_DEBUG__']参数强制显示错误,如 /index.php?c=xx&__OF_DEBUG__
- 访问 框架目录(如:/include/of)/index.php?c=of_base_error_tool 来查阅以往错误的详细信息
- 修改框架配置 _of.error.xxx = false 禁用对应日志的记录
- 在SQL死锁时, 会尝试使用 PROCESS 权限, 读取死锁日志
- 调用 of::error(异常对象或错误数组) 来自定异常或错误
记录错误
-
<?php /** * 默认框架会记录产生的错误及异常 */ trigger_error("A custom error has been triggered"); throw new Exception("Value must be 1 or below"); /** * 主动记录异常日志并不会影响后代码执行 */ try { throw new Exception("Demo exception"); //抛出异常 } catch (Exception $e) { of::error($e); //记录错误 } /** * 自定义错误结构 : { * "memo" : 作备忘录, 默认 false=正常抛出错误, true=不算错误仅存日志, str=相当{"memo":true,"type":str} * "type" : 错误类型, 字符串类型, 默认 自动判断 * "code" : 错误代码, 默认 E_USER_NOTICE * "info" : 错误描述, 默认 "Unknown error" * "file" : 文件路径, 默认 代码触发文件 * "line" : 错误行数, 默认 代码触发行数 * } */ of::error(array( 'memo' => '__DEBUG__', 'code' => E_USER_WARNING, 'info' => 'Debug error', 'file' => __FILE__, 'line' => __LINE__ )); //读取最后错误 of::error(); //删除最后错误 of::error(false);
错误回调
-
of::error发生错误时触发
<?php /** * 回调函数接收的参数($params) { * "memo" : 作备忘录, 默认 false=正常抛出错误, true=不算错误仅存日志 * "type" : 错误类型, 字符串类型, 默认 自动判断 * "code" : 错误代码, 默认 E_USER_NOTICE * "info" : 错误描述, 默认 "Unknown error" * "file" : 文件路径, 默认 代码触发文件 * "line" : 错误行数, 默认 代码触发行数 * } */ function errorCallback($params) { print_r($params); //返回true时, 框架不记录日志 return true; } of::event('of::error', 'errorCallback'); -
of_base_error_writeLog::error发生错误时触发
<?php /** * 回调函数接收的参数($params) { * "type" :&错误来源, 其中一个(js, php, sql) * "data" :&错误信息 { * 'errorType' : 错误类型(sqlError, exception, error) * 'environment' : 错误体,包括环境,错误细节,回溯 { * 'type' : php=错误级别, sql=错误码及说明 * 'info' : php=错误描述, sql=错误sql * 'file' : 定位->路径 * 'line' : 定位->行数 * 'envVar' : 环境变量 { * '_GET' : 对应超全局变量 * '_POST' : 对应超全局变量 * '_COOKIE' : 对应超全局变量 * '_SESSION' : 对应超全局变量 * '_SERVER' : 对应超全局变量 * '_REQUEST' : 对应超全局变量 * 'iStream' : 原始请求输入流 * } * 'backtrace' : 回溯信息,js没有 {} * } * 'time' : 生成时间戳 * } * } */ function errorCallback($params) { print_r($params); //返回true时, 框架不记录日志 return true; } of::event('of_base_error_writeLog::error', 'errorCallback');