emincan/laravel-tracker

此包最新版本(v1.1.0)没有提供许可信息。

Laravel 框架的追踪库。

v1.1.0 2022-02-26 18:42 UTC

This package is auto-updated.

Last update: 2024-09-07 16:54:14 UTC


README

Laravel Tracker 包提供了一种接口,用于跟踪 Laravel 项目中的各种活动。

  • 它可以跟踪您想要的模型上的事件,
  • 如果您想手动跟踪一些活动,它也提供了一些方法,
  • 它在一个漂亮的仪表板上显示所有追踪的活动数据和统计信息

目录

安装

# Install package
$ composer require emincan/laravel-tracker

# Run installer
$ php artisan tracker:install

# Run migrations
$ php artisan migrate

配置

安装后,配置文件将位于 config/tracker.php

默认配置文件如下。

<?php
return [
    "dashboard" => [
        /**
         * When trying to access the Laravel Tracker dashboard, these middlewares will be used.
         * You can add your own middlewares or built-in Laravel middlewares here.
         * For production usage, it is recommended to add "auth" or another middleware that provides authorization.
         */
        "middlewares" => ['web'],

        /**
         *  This prefix using as `route prefix`.
         *  By default, the dashboard is available at: yourdomain.com/tracker
         *  If you want to access the dashboard by yourdomain.com/my-dashboard, then update this value to 'my-dashboard'
         */
        'prefix' => 'tracker'
    ],
];

如何跟踪活动

Laravel Tracker 提供了两种主要的使用方法,可以单独使用或结合使用。

自动跟踪模型事件

这种使用风格允许通过监听模型事件来跟踪模型活动。(Eloquent 事件)。

要开始跟踪模型,您只需要将该模型的 Trackable 特性添加到模型中。

use Emincan\Tracker\Trackable;

class User extends Authenticatable
{
    use HasFactory, Notifiable, Trackable;
}

默认情况下,它跟踪 createdupdateddeleted 事件。

要自定义 Laravel Tracker 将监听的事件列表,您可以在模型中创建一个 $trackEvents 属性。

use Emincan\Tracker\Trackable;

class User extends Authenticatable
{
    use HasFactory, Notifiable, Trackable;
    protected static $trackEvents = ["created"];
}

Laravel Tracker 支持所有 Laravel Eloquent 模型事件。

对于一些特殊事件(如 updated),它还存储了模型上更改的内容。

手动跟踪活动

这种使用风格可能类似于日志记录,但它提供了更多的功能。

例如,假设用户可以在您的系统中发布新帖子。您可以通过以下示例手动跟踪这些活动

// your code...
// $user->publish($post);
(new Tracker)
  ->setTrackable(\App\Model\Post::class, $post->id)
  ->setAction("user_published_a_post")
  ->setMessage("Post is published by user.")
  ->setAdditionalData([
    "user_email" => $user->email,
    "post_has_media" => true
  ])
  ->save();

Laravel Tracker 在保存请求之前自动添加请求 ID 和 IP 地址。

仪表板

默认情况下,仪表板 URL 为 yourdomain.com/tracker

URL 是可配置的,配置文件位于 config/trackable.php

清除旧数据

清除旧数据是一项重要任务,通过删除不必要的记录,防止性能问题,并确保平稳运行来在数据库中创建更多空间。

Laravel Tracker 有一个 clear 命令用于此目的。

php artisan tracker:clear 命令的基本用法是删除 7 天以上的活动记录。

该命令支持以下附加参数;

  • --older-than-days:使用 --older-than-days 参数指定要删除的数据的最小年龄。默认情况下,将删除 7 天以上的数据。
  • --chunk:使用 --chunk 选项可以指定每次删除的块的大小。这在需要删除大量数据时很有用,因为尝试使用单个数据库请求删除所有数据可能会导致锁定和性能问题。例如,如果您有 10,000 条记录并将块大小设置为 1,000,则数据将通过 10 个数据库请求删除,每次请求删除 1,000 条记录。--chunk 的默认值为 5,000。
  • --no-question:默认情况下,Laravel Tracker 的清除命令会提示用户确认是否要删除数据。但是,如果您使用 no-question 标志与命令一起使用,则过程将完成而不会提出任何问题。