封装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);
}

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

原文地址:https://www.cnblogs.com/jiqing9006/p/10851090.html