laravel 利用中间件进行操作日志记录

Posted 木偶跳舞

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了laravel 利用中间件进行操作日志记录相关的知识,希望对你有一定的参考价值。

利用中间件进行操作日志记录过程:

1、创建中间件

php artisan make:middleware AdminOperationLog

2、生成了文件./app/Http/Middleware/AdminOperationLog.php

代码如下:

<?php

namespace App\\Http\\Middleware;

use Closure;
use Illuminate\\Http\\Request;
use Illuminate\\Support\\Facades\\Auth;
use App\\Http\\Models\\OperationLog;

class AdminOperationLog

    /**
     * Handle an incoming request.
     *
     * @param  \\Illuminate\\Http\\Request  $request
     * @param  \\Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    
        $user_id = 0;
        if(Auth::check()) 
            $user_id = (int) Auth::id();
        
        $_SERVER['admin_uid'] = $user_id;
        if('GET' != $request->method())
            $input = $request->all();
            $log = new OperationLog(); # 提前创建表、model
            $log->uid = $user_id;
            $log->path = $request->path();
            $log->method = $request->method();
            $log->ip = $request->ip();
            $log->sql = '';
            $log->input = json_encode($input, JSON_UNESCAPED_UNICODE);
            $log->save();   # 记录日志
        
        return $next($request);
    

3、中间件引入 ./app/Http/Kernel.php

protected $middlewareGroups = [
        'web' => [
            ...
            \\App\\Http\\Middleware\\AdminOperationLog::class,
            ...
        ],

        'api' => [
            'throttle:60,1',
            'bindings',
        ],
    ];

此时进行操作时就会记录操作日志

以上是关于laravel 利用中间件进行操作日志记录的主要内容,如果未能解决你的问题,请参考以下文章

laravel使用中间件记录用户请求日志

Laravel框架中增加记录access log的日志中间件

laravel的中间件

Laravel之中间件

laravel 怎样打数据库每一步操作日志

Mysql之binlog日志说明及利用binlog日志恢复数据操作记录