• 封装Json+日志


    /**
     * 输出json
     * @param $msg
     * @param int $errno
     */
    public function printOutError($msg = '操作失败', $errno = 10099)
    {
        $result = [
            'msg'   => $msg,
            'errno' => $errno
        ];
        $param  = $_POST ?: $_GET;
        setlog($param, $result, CONTROLLER_NAME . '/' . ACTION_NAME, C('DB_NAME') . '_error.log');
        $this->setErr($errno, $msg);
        $this->Send();
    }
    
    /**
     * 输出json
     * @param $msg
     * @param int $errno
     */
    public function E($msg = '操作失败', $errno = 10099)
    {
        $result = [
            'msg'   => $msg,
            'errno' => $errno
        ];
        $param  = $_POST ?: $_GET;
        setlog($param, $result, CONTROLLER_NAME . '/' . ACTION_NAME, C('DB_NAME') . '_error.log');
        $this->setErr($errno, $msg);
        $this->Send();
    }
    
    
    /**
     * 输出json
     * @param array $out_data
     * @param string $msg
     * @param bool $force_out 强制展示结果
     */
    public function printOutSuccess($out_data = [], $msg = '操作成功', $force_out = false)
    {
        $result = [
            'msg'  => $msg,
            'data' => $out_data
        ];
        $param  = $_POST ?: $_GET;
        setlog($param, $result, CONTROLLER_NAME . '/' . ACTION_NAME, C('DB_NAME') . '_success.log');
        $this->setErr(0, $msg);
        if ($out_data || $force_out) {
            $this->setAttr('data', $out_data !== null ? $out_data : []); // null的时候返回空
        }
        $this->Send();
    }
    
    /**
     * 输出json
     * @param array $out_data
     * @param string $msg
     * @param bool $force_out 强制展示结果
     */
    public function S($out_data = [], $msg = '操作成功', $force_out = false)
    {
        $result = [
            'msg'  => $msg,
            'data' => $out_data
        ];
        $param  = $_POST ?: $_GET;
        setlog($param, $result, CONTROLLER_NAME . '/' . ACTION_NAME, C('DB_NAME') . '_success.log');
        $this->setErr(0, $msg);
        if ($out_data || $force_out) {
            $this->setAttr('data', $out_data !== null ? $out_data : []); // null的时候返回空
        }
        $this->Send();
    }
    
    // 全局通用日志工具
    function setlog($param = [],$result = [],$name='',$filename = 'm.log',$path = '/tmp/log/'){
        // 没有目录则创建目录
        if (!mkdir($path, 0777, true) && !is_dir($path)) {
            throw new RuntimeException(sprintf('目录 "%s" 创建失败', $path));
        } // 目录,权限,递归
    
        if ($result && $param) {
            $arr = array(
                'param'     =>      $param,
                'result'    =>      $result,
                'name'      =>      $name,
                'time'      =>      date('Y-m-d H:i:s')
            );
        } else {
            $arr = array(
                'content'     =>    $param ?:$result,
                'name'      =>      $name,
                'time'      =>      date('Y-m-d H:i:s')
            );
        }
    
        file_put_contents($path.$filename,var_export($arr,true).PHP_EOL,FILE_APPEND);
    }
    
    

    可以有效的记录,每个接口下的错误日志,参数与返回数据。

  • 相关阅读:
    Gridview利用DataFormatString属性设置数据格式
    Sqlserver 字符串操作
    解决“网络不存在或尚未启动”
    ASP.NET中Url重写后,打不开真正的Html页面
    jquery 清空表单
    Sqlserver2005远程访问
    FCKeditor 在Ie中弹出“未知工具栏项目”的暂时解决方法
    表单成功提交了,点后退显示网页过期
    找不到方法:“Void System.Web.UI.HtmlControls.HtmlForm.set_Action(System.String)”。
    LINQ 标准的查询操作符 设置操作符号 两个结果集的 并、交、差、唯一
  • 原文地址:https://www.cnblogs.com/jiqing9006/p/10851090.html
Copyright © 2020-2023  润新知