实现laravel 插入操作日志到数据库的方法


Posted in PHP onOctober 11, 2019

1 . 创建一个中间件

执行: php artisan make:middleware OperationLog

2 . 在中间件中编写一个writeLog() 或者直接写在handle里面

<?php

namespace App\Http\Middleware;

use App\User;
use Closure;
use Illuminate\Support\Facades\Auth;

class OperationLog
{
  /**
   * Handle an incoming request.
   *
   * @param \Illuminate\Http\Request $request
   * @param \Closure $next
   * @return mixed
   */
  public function handle($request, Closure $next)
  {
    $input = $request->all(); //操作的内容
    $path = $request->path(); //操作的路由
    $method = $request->method(); //操作的方法
    $ip = $request->ip(); //操作的IP
    $usernum = $request->usernum; //操作人(要自己获取)
    self::writeLog($usernum,$input,$path,$method,$ip);

    return $next($request);
  }
  public function writeLog($usernum,$input,$path,$method,$ip){

    $user = User::where('usernum',$usernum)->first();

    if($user) {
      $user_id = $user->userid;
    }

    $log = new \App\Models\OperationLog();
    $log->setAttribute('user_id', $user_id);
    $log->setAttribute('path', $path);
    $log->setAttribute('method', $method);
    $log->setAttribute('ip', $ip);
    $log->setAttribute('input', json_encode($input, JSON_UNESCAPED_UNICODE));
    $log->save();
  }
}

3 .创建一个OperationLog模型(这里我放在Models文件夹下了)

执行 : php artisan make:model Models\OperationLog

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class OperationLog extends Model
{

  //定义表
  protected $table = "operation_log";

  //定义主键
  protected $primaryKey = "id";
}

4 . 将中间件注册到Kernel.php 文件

/**
 * The application's global HTTP middleware stack.
 *
 * 这些中间件是在对应用程序的每次请求中运行的
 *
 * @var array
 */
protected $middleware = [
    .......,
    .......,
    .......,
    \App\Http\Middleware\OperationLog::class,
  ];

大功告成…

以上这篇实现laravel 插入操作日志到数据库的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
IStream与TStream之间的相互转换
Aug 01 PHP
在PHP中使用curl_init函数的说明
Nov 02 PHP
PHP教程之PHP中shell脚本的使用方法分享
Feb 23 PHP
PHP程序员基本要求和必备技能
May 09 PHP
destoon安装出现Internal Server Error的解决方法
Jun 21 PHP
Codeigniter(CI)框架分页函数及相关知识
Nov 03 PHP
php中ltrim()、rtrim()与trim()删除字符空格实例
Nov 25 PHP
THINKPHP项目开发中的日志记录实例分析
Dec 01 PHP
php字符串按照单词进行反转的方法
Mar 14 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
laravel实现图片上传预览,及编辑时可更换图片,并实时变化的例子
Nov 14 PHP
PHP时间相关常用函数用法示例
Jun 03 PHP
laravel 获取当前url的别名方法
Oct 11 #PHP
解决PHP curl或file_get_contents下载图片损坏或无法打开的问题
Oct 11 #PHP
解决PHP使用CURL发送GET请求时传递参数的问题
Oct 11 #PHP
ThinkPHP 5.1 跨域配置方法
Oct 11 #PHP
零基础php编程好学吗
Oct 11 #PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 #PHP
PHP与SQL语句写一句话木马总结
Oct 11 #PHP
You might like
ThinkPHP 防止表单重复提交的方法
2011/08/08 PHP
ajax取消挂起请求的处理方法
2013/03/18 PHP
php在linux下检测mysql同步状态的方法
2015/01/15 PHP
php实现搜索一维数组元素并删除二维数组对应元素的方法
2015/07/06 PHP
php curl上传、下载、https登陆实现代码
2017/07/23 PHP
使用Entrust扩展包在laravel 中实现RBAC的功能
2020/03/16 PHP
增强的 JavaScript 的 trim 函数的代码
2007/08/13 Javascript
jquery.alert 弹出式复选框实现代码
2009/06/15 Javascript
ExtJs grid行 右键菜单的两种方法
2010/06/19 Javascript
javascript 进阶篇2 CSS XML学习
2012/03/14 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
javascript dom追加内容实现示例
2013/09/21 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
jQuery实现的简单前端搜索功能示例
2017/10/28 jQuery
JS设计模式之命令模式概念与用法分析
2018/02/06 Javascript
element-ui的回调函数Events的用法详解
2018/10/16 Javascript
详解Element 指令clickoutside源码分析
2019/02/15 Javascript
vue实现带复选框的树形菜单
2019/05/27 Javascript
Vue项目前后端联调(使用proxyTable实现跨域方式)
2020/07/18 Javascript
element 动态合并表格的步骤
2020/12/31 Javascript
Python文件夹与文件的操作实现代码
2014/07/13 Python
requests和lxml实现爬虫的方法
2017/06/11 Python
pandas中的DataFrame按指定顺序输出所有列的方法
2018/04/10 Python
python中scikit-learn机器代码实例
2018/08/05 Python
python实现银联支付和支付宝支付接入
2019/05/07 Python
Python使用scipy模块实现一维卷积运算示例
2019/09/05 Python
Python 实现递归法解决迷宫问题的示例代码
2020/01/12 Python
Ticketmaster德国票务网站:购买音乐会和体育等门票
2016/11/14 全球购物
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
写一个方法1000的阶乘
2012/11/21 面试题
运动会广播稿200米
2014/01/27 职场文书
日化店促销方案
2014/03/26 职场文书
办公室禁烟通知
2015/04/23 职场文书
事业单位岗位说明书
2015/10/08 职场文书
golang 比较浮点数的大小方式
2021/05/02 Golang
pandas DataFrame.shift()函数的具体使用
2021/05/24 Python