bilfeldt/laravel-route-statistics

记录每个用户/团队的路由使用情况

v3.4.0 2024-05-10 09:13 UTC

README

bilfeldt/laravel-route-statistics

Latest Version on Packagist GitHub Tests Action Status StyleCI Code Style Status Total Downloads

为了统计目的记录Laravel的请求和响应,并可选择按小时/天/月等聚合,以最小化数据库需求。

描述

记录请求并将它们分组,以进行路由使用情况的汇总统计。按路由分组请求意味着此包将最小化存储到数据库中的数据,并且后续清除旧数据可以进一步提高此效率。

此包让您

  • 查看每个用户使用应用程序的情况以及他们使用应用程序的哪些部分
  • 查看是否有未经认证的用户正在频繁地对您的应用程序进行请求

安装

您可以通过Composer安装此包

composer require bilfeldt/laravel-route-statistics

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --provider="Bilfeldt\LaravelRouteStatistics\LaravelRouteStatisticsServiceProvider" --tag="migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="Bilfeldt\LaravelRouteStatistics\LaravelRouteStatisticsServiceProvider" --tag="config"

用法

有几种方法可以启用路由使用情况的记录

启用全局记录

这将启用网站范围的记录,尽管这是最简单的实现方式,但这可能不是您想要的(考虑以下使用中间件的中间方式)

只需将 RouteStatisticsMiddleware 添加到 app/Http/Kernel.php 中的全局中间件即可

// app/Http/Kernel.php
<?php

namespace App\Http;

use Illuminate\Foundation\Http\Kernel as HttpKernel;

class Kernel extends HttpKernel
{
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Bilfeldt\LaravelRouteStatistics\Http\Middleware\RouteStatisticsMiddleware::class, // <-- Added
        // \App\Http\Middleware\TrustHosts::class,
        \App\Http\Middleware\TrustProxies::class,
        \Fruitcake\Cors\HandleCors::class,
        \App\Http\Middleware\PreventRequestsDuringMaintenance::class,
        \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
        \App\Http\Middleware\TrimStrings::class,
        \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
    ];
...

通过中间件启用

除了将 RouteStatisticsMiddleware 添加为全局中间件之外,还可以使用以下方式将其添加到某些路由或路由组

Route::middleware(['routestatistics'])->...

使用请求宏启用

可以按需启用记录,通常在控制器中,这对于任何条件记录都很有用

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Contracts\Support\Renderable
     */
    public function index(Request $request)
    {
        $request->routeStatistics(); // This will enable route statistics logging
    
        return view('home');
    }
}

Artisan命令

此包附带两个方便的Artisan命令

  • route:stats:轻松查看相关路由的统计信息。
  • route:unused:以整洁的方式列出没有记录的路由。请注意,为了使此功能有用,这些路由也应记录。

工作原理

此包按以下方式工作

  1. 为日志记录标记请求:可以使用中间件或请求助手完成
  2. (可选)添加任何将在日志记录时使用的上下文数据:一个常见的用例是添加相关的路由参数,例如 team_id
  3. 记录请求:将日志记录持久化到数据库 - 使用默认日志记录器时将记录以下内容
  • user_id:已认证的用户(如果有)
  • team_id:与请求关联的团队ID(如果有)
  • method:HTTP方法(GET/POST/...
  • route:路由名称(如果有)或路由URI(例如 /posts/{post}
  • parameters:传递的路由参数(如果启用则记录,否则为 null
  • status:HTTP状态(例如 202
  • ip:请求IP
  • date:请求日期作为datetime(可以聚合)
  • counter:按分钟/小时/天/月等聚合记录的请求数量

测试

composer test

变更日志

请参阅CHANGELOG以获取有关最近更改的更多信息。

贡献

请参阅CONTRIBUTING以获取详细信息。

安全漏洞

请查看我们的安全策略,了解如何报告安全漏洞。

致谢

许可证

MIT 许可证(MIT)。请参阅许可证文件获取更多信息。