/**
* 输出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);
}

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

封装Json+日志的更多相关文章

  1. 使用Map List 封装json数据

    <dependency> <groupId>net.sf.json-lib</groupId> <artifactId>json-lib</art ...

  2. Web自动化框架之五一套完整demo的点点滴滴(excel功能案例参数化+业务功能分层设计+mysql数据存储封装+截图+日志+测试报告+对接缺陷管理系统+自动编译部署环境+自动验证false、error案例)

    标题很大,想说的很多,不知道从那开始~~直接步入正题吧 个人也是由于公司的人员的现状和项目的特殊情况,今年年中后开始折腾web自动化这块:整这个原因很简单,就是想能让自己偷点懒.也让减轻一点同事的苦力 ...

  3. 编写JsonResult封装JSON返回值(模板参阅)

    编写JsonResult封装JSON返回值 package cn.tedu.note.util; import java.io.Serializable; import cn.tedu.note.se ...

  4. HAproxy Json日志格式配置

    通过日志工作分析日志时,非json日志分析起来比较麻烦.通过以下的配置,可以让生成的日志为json. log-format {"haproxy_clientIP":"%c ...

  5. SpringBoot之封装json对象返回json数据

    /** * @description:封装json对象,所有返回结果都使用它 **/ public class Result<T> { private int code;// 业务自定义状 ...

  6. jquey ajax 将变量值封装json传入JAVA action获取解析

    最近在做一个小小的功能模块,前台有很多的数据需要传入到后台,前台页面设计如下: 看起来不是很清楚,总之表单中的数据都要提交到后台进行处理,然后插入到数据库,而且是一起提交到后台的,实现的方法大致有两种 ...

  7. flink---实时项目--day02-----1. 解析参数工具类 2. Flink工具类封装 3. 日志采集架构图 4. 测流输出 5. 将kafka中数据写入HDFS 6 KafkaProducer的使用 7 练习

    1. 解析参数工具类(ParameterTool) 该类提供了从不同数据源读取和解析程序参数的简单实用方法,其解析args时,只能支持单只参数. 用来解析main方法传入参数的工具类 public c ...

  8. Springboot单例模式实战封装json转换

    一.定义 保证一个类仅有一个实例,并提供一个全局访问点. 二.优点 (1)在内存里只有一个实例,减少了内存开销      (2)可以避免对资源的多重占用      (3)设置全局访问点,严格控制访问 ...

  9. ELK7.4.0分析nginx json日志

    ELK7.4.0单节点部署 环境准备 安装系统,数据盘设置为/srv 内核优化参考 我们需要创建elk专用的账号,并创建所需要的目录并授权 useradd elk; mkdir /srv/{app,d ...

随机推荐

  1. Vue.js 中的 v-cloak 指令

    可以使用 v-cloak 指令设置样式,这些样式会在 Vue 实例编译结束时,从绑定的 HTML 元素上被移除. 当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示 ...

  2. vue中引入Tinymce富文本编辑器

    最近想在项目上引入一个富文本编辑器,之前引入过summernote,感觉并不太适合vue使用, 然后在网上查了查,vue中使用Tinymce比较适合, 首先,我们在vue项目的components文件 ...

  3. 使用u盘安装linux(manjaro)时Grub报错

    本文通过MetaWeblog自动发布,原文及更新链接:https://extendswind.top/posts/technical/manjaro_install_problem_grub 错误 e ...

  4. 对list某个条件排序,并实现分页

    package com.jcloud.aioc.api.controller.Test; import com.alibaba.fastjson.JSON; import org.apache.poi ...

  5. Hadoop(4)MapReduce 任务的推测(speculative)执行

    Straggle(掉队者)是指那些跑的很慢但最终会成功完成的任务.一个掉队的Map任务会阻止Reduce任务开始执行. Hadoop不能自动纠正掉队任务,但是可以识别那些跑的比较慢的任务,然后它会产生 ...

  6. 怎么样使用vuex

    https://www.cnblogs.com/songrimin/p/7815850.html

  7. 常用的etl工具比较

    ETL是什么? ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract).转换(transform).加载(load)至目的端的过程.(数 ...

  8. Vrms、Vpk、W、dBm、dBW、dBuV、dBm/Hz

    负载阻抗Z 在做这些单位转换前第一个需要提到的就是负载阻抗(Z, Ohm),我们在测试测量中说某个量为上面的某一个单位时候,都包含了一个前提条件,那就是负载阻抗,离开了负载阻抗你说的这些总带有一丝耍流 ...

  9. [Java复习] 缓存Cache part2

    7. Redis持久化有哪几种方式?不同的持久化机制都有什么优缺点?持久化机制具体底层是如何实现的? 为什么要持久化? 如果只是存在内存里,如果redis宕机再重启,内存数据就丢失了,所以要用持久化机 ...

  10. Tomcat重启Shell脚本

    --测试通过 vim restart_tomcat.sh#!/bin/bash# Filename: restart_tomcat.sh# Description: Restart tomcat# D ...