use*_*010 1 logging laravel laravel-6
我想记录用户访问过的所有 URL。但是没有我想从我的代码中记录的网址。这是我完成的代码,请给我一些建议。谢谢和欣赏。
网络路由
Route::get('/{url}', 'LogController@myTestAddToLog')->where('url', '[\w\d\-]+(.*)');
Run Code Online (Sandbox Code Playgroud)
日志控制器
public function myTestAddToLog()
{
\LogActivity::addToLog('My Testing Add To Log.');
}
Run Code Online (Sandbox Code Playgroud)
应用程序/助手 LogActivity
public static function addToLog($subject)
{
$log = [];
$log['url'] = Request::fullUrl();
$log['ip'] = Request::ip();
$log['user_id'] = auth()->check() ? auth()->user()->id : 1;
LogActivityModel::create($log);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
您需要创建一个中间件。
php artisan make:middleware AddToLog
Run Code Online (Sandbox Code Playgroud)
然后,将您的代码放在中间件中。
<?php
namespace App\Http\Middleware;
use Closure;
use App\LogActivityModel;
class AddToLog
{
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if(auth()->user()) {
LogActivityModel::create([
'url' => request()->fullUrl(),
'ip' => request()->ip(),
'user_id' => auth()->id(),
]);
}
return $next($request);
}
}
Run Code Online (Sandbox Code Playgroud)
然后,在里面app/Http/kernel.php,将你的中间件添加到$middleware. 这将允许任何调用的 URL 触发此代码。
protected $middleware = [
...
\App\Http\Middleware\AddToLog::class,
];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1877 次 |
| 最近记录: |