Skip to content

gettingStarted error

tolizhan edited this page Dec 1, 2024 · 1 revision

错误日志

使用日志

  1. 框架配置preloaded加入"of_base_error_writeLog"启动
  2. 开发模式时, 产生错误会有明显的提示
  3. 生产模式时, 加$_REQUEST['__of_DEBUG__']参数强制显示错误,如 /index.php?c=xx&__OF_DEBUG__
  4. 访问 框架目录(如:/include/of)/index.php?c=of_base_error_tool 来查阅以往错误的详细信息
  5. 修改框架配置 _of.error.xxx = false 禁用对应日志的记录
  6. 在SQL死锁时, 会尝试使用 PROCESS 权限, 读取死锁日志
  7. 调用 of::event('of::error', true, 异常对象或错误数组) 来自定异常或错误

自定错误

  • of::event('of::error', true, 异常对象或错误数组)自定义错误或异常

    cleanbool
    true=清除错误信息, false=读取错误信息
    <?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::event('of::error', true, $e);           //记录错误 }

    /**   自定义错误结构 : {     "memo" : 作备忘录, 默认 false=正常抛出错误, true=不算错误仅存日志, str=指定备忘类型     "type" : 错误类型, 字符串类型, 不与"memo"同用     "code" : 错误代码, 默认 E_USER_NOTICE     "info" : 错误描述, 默认 "Unknown error"     "file" : 文件路径, 默认 代码触发文件     "line" : 错误行数, 默认 代码触发行数   }  / of::event('of::error', true, array(     'memo' => 'DEBUG',     'code' => E_USER_WARNING,     'info' => 'Debug error',     'file' => FILE,     'line' => LINE ));

内置方法

  • of::work('error', $read = true);获取最后一次基本错误信息

    readbool
    true=读取错误信息, false=清除错误信息
    <?php
    /**
      of_base_error_writeLog未启动也可以使用 详见of::work
      }
     /
    of::work('error');          //读取错误, 无错误为 null, 有错误返回 {
         "code" : 编码,
         "info" : 错误,
         "file" : 路径,
         "line" : 行数,
         ...
     }
    of::work('error', false);   //清除错误
  • of_base_error_writeLog::lastError($clean = false)获取最后一次详细错误信息

    cleanbool
    true=清除错误信息, false=读取错误信息
    <?php
    of_base_error_writeLog::lastError(false);    //读取错误, 无错误为 null, 结构为 {
        'logType'       : 错误类型,
        'environment'   : {
            'code'      : 错误码,
            'info'      : 错误信息,
            'file'      : 错误文件,
            'line'      : 错误行数,
            'backtrace' : 错误回溯 {}
        }
    }
    of_base_error_writeLog::lastError(true);     //清除错误

错误回调

  • 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');
Clone this wiki locally