Реализация ведения журнала активности в Laravel: примеры кода и лучшие практики

  1. Пакет Laravel-activitylog:
    Вы можете использовать пакет «spatie/laravel-activitylog», чтобы легко реализовать ведение журнала активности в вашем приложении Laravel. Этот пакет предоставляет простой способ регистрации действий, выполняемых пользователями.

    Установка:

    composer require spatie/laravel-activitylog

    Использование:

    // Log an activity
    activity()->log('Some activity');
    // Log an activity with a specific model
    activity()->performedOn($model)->log('Activity on Model');
    // Retrieve activity logs for a specific model
    $activityLogs = $model->activityLogs;
  2. Ведение журнала вручную.
    Если вы предпочитаете более индивидуальный подход, вы можете вручную регистрировать действия, используя встроенный механизм журналирования Laravel. Вы можете создать специальную модель и таблицу для хранения журналов активности.

    Пример:

    // Create an activity log entry
    ActivityLog::create([
       'user_id' => auth()->id(),
       'activity' => 'Some activity',
    ]);
    // Retrieve activity logs
    $activityLogs = ActivityLog::where('user_id', auth()->id())->get();
  3. Прослушиватели событий.
    Вы можете использовать прослушиватели событий Laravel для автоматического протоколирования действий всякий раз, когда в вашем приложении происходят определенные события.

    Пример:

    // Create an event listener
    class UserLoggedInListener
    {
       public function handle(UserLoggedIn $event)
       {
           ActivityLog::create([
               'user_id' => $event->user->id,
               'activity' => 'User logged in',
           ]);
       }
    }
    // Register the event listener
    protected $listen = [
       UserLoggedIn::class => [
           UserLoggedInListener::class,
       ],
    ];