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

本文介绍了如何在Laravel应用中实现插入操作日志到数据库的流程,包括创建中间件、编写日志逻辑、创建模型以及将中间件注册到kernel.php配置文件。通过这些步骤,可以有效跟踪和记录系统的操作历史。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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,
    ];

大功告成….

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值