aginev / activity-log by aginev

Track user activities in Laravel 5 applications
2,304
5
2
Package Data
Maintainer Username: aginev
Maintainer Contact: me@aginev.com (Atanas Ginev)
Package Create Date: 2016-02-04
Package Last Update: 2021-10-27
Language: PHP
License: MIT
Last Refreshed: 2024-12-17 03:03:22
Package Statistics
Total Downloads: 2,304
Monthly Downloads: 4
Daily Downloads: 0
Total Stars: 5
Total Watchers: 2
Total Forks: 1
Total Open Issues: 0

Track user activities in Laravel 5 applications

This package will track created, updated or deleted event on subscribed models and will store useful info about it.

Features

  • Composer installable
  • PSR4 auto loading
  • Track created, updated or deleted event on subscribed models
  • Write logs in database or log files
  • Command for cleaning logs

Requires

Build only for Laravel Framework 5 only!

Installation

In terminal

composer require aginev/activity-log:1.0.*

Add Service Provider to your config/app.php like so

// config/app.php

'providers' => [
    '...',
    Aginev\ActivityLog\ActivityLogServiceProvider::class,
];

Publish migrations

php artisan vendor:publish --provider="Aginev\ActivityLog\ActivityLogServiceProvider" --tag="migrations"
php artisan migrate

Publish config

php artisan vendor:publish --provider="Aginev\ActivityLog\ActivityLogServiceProvider" --tag="config"

Optionally you can add activity log command and you will be able to clean your logs.

// app/Console/Kernel.php

protected $commands = [
    '...',
    \Aginev\ActivityLog\Commands\ActivityLogClean::class,
];

Usage

To subscribe model for activity log just use \Aginev\ActivityLog\Traits\ObservableModel

use \Aginev\ActivityLog\Traits\ObservableModel;

To add custom activity description overwrite activityDescription method in your model

/**
 * Implement this method to set custom activity description message
 * @param $event Event name
 * @param User $user Current logged in user
 * @return string
 */
public function activityDescription($event, User $user = null) {
    return 'User ' . $this->full_name . ' has been ' . $event . ' from ' . $user->full_name;
}

Get activities

$logs = \ActivityLog::getActivities()->get(); // Get all activities
$logs = \ActivityLog::getLatestActivities(2); // Get latest 2 activities

Clean log

$logs = \ActivityLog::cleanLog(30); // Offset in days

Clean the log from terminal

php artisan activity-log:clean

Custom handler implmentations

  1. Implement \Aginev\ActivityLog\HandlersLogActivityInterface\ActivityLogInterface in your custom handler.
  2. Place custom handler as value in activity-log.log config

Credits

https://github.com/spatie/activitylog - Similar package but with different implementation. Code blocks used from there. Thanks!

License

MIT - http://opensource.org/licenses/MIT