lizhen_gitee 1 год назад
Родитель
Сommit
511f6f90a5
2 измененных файлов с 42 добавлено и 1 удалено
  1. 9 1
      application/api/library/ExceptionHandle.php
  2. 33 0
      application/common/controller/Api.php

+ 9 - 1
application/api/library/ExceptionHandle.php

@@ -27,7 +27,15 @@ class ExceptionHandle extends Handle
             if ($e instanceof \think\exception\HttpException) {
                 $statuscode = $code = $e->getStatusCode();
             }
-            return json(['code' => $code, 'msg' => $msg, 'time' => time(), 'data' => null], $statuscode);
+
+            $result = ['code' => $code, 'msg' => $msg, 'time' => time(), 'data' => null];
+
+            //记录app异常返回结果
+            if(defined('API_REQUEST_ID')) { //记录app正常返回结果
+                db('api_request_log')->where('id',API_REQUEST_ID)->update(['result'=>json_encode($result)]);
+            }
+
+            return json($result, $statuscode);
         }
 
         //其它此交由系统处理

+ 33 - 0
application/common/controller/Api.php

@@ -75,6 +75,8 @@ class Api
 
         // 控制器初始化
         $this->_initialize();
+        //日志
+        $this->request_log();
 
         // 前置操作方法
         if ($this->beforeActionList) {
@@ -360,5 +362,36 @@ class Api
         $this->request->token();
     }
 
+    /*
+     * api 请求日志
+     * */
+    protected function request_log(){
+        //api_request_log
+        $modulename     = $this->request->module();
+        $controllername = $this->request->controller();
+        $actionname     = $this->request->action();
+
+        $data = [
+            'uid'   => $this->auth->id,
+            'api'   => $modulename.'/'.$controllername.'/'.$actionname,
+            'params' => json_encode($this->request->request()),
+            'addtime'  => time(),
+            'adddatetime'  => date('Y-m-d H:i:s'),
+            'ip'   => request()->ip(),
+        ];
+        $request_id = db('api_request_log')->insertGetId($data);
+        defined('API_REQUEST_ID') or define('API_REQUEST_ID', $request_id);
+
+    }
+
+    protected function request_log_update($log_result){
+        if(defined('API_REQUEST_ID')) { //记录app正常返回结果
+            if(strlen(json_encode($log_result['data'])) > 10000) {
+                $log_result['data'] = '数据太多,不记录';
+            }
+            db('api_request_log')->where('id',API_REQUEST_ID)->update(['result'=>json_encode($log_result)]);
+        }
+    }
+
 
 }