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

时间:2022-07-27
本文章向大家介绍实现laravel 插入操作日志到数据库的方法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1 . 创建一个中间件

执行: php artisan make:middleware OperationLog

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

<?php

namespace AppHttpMiddleware;

use AppUser;
use Closure;
use IlluminateSupportFacadesAuth;

class OperationLog
{
  /**
   * Handle an incoming request.
   *
   * @param IlluminateHttpRequest $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 AppModelsOperationLog();
    $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 ModelsOperationLog

<?php

namespace AppModels;

use IlluminateDatabaseEloquentModel;

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 = [
    .......,
    .......,
    .......,
    AppHttpMiddlewareOperationLog::class,
  ];

大功告成…

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