封装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);
}
可以有效的记录,每个接口下的错误日志,参数与返回数据。