sdkwala / laravel-activity-logger
A Laravel package to log model events (created, updated, deleted) to a database table with hybrid model registration.
v1.0.0
2025-08-08 06:21 UTC
Requires
- php: ^8.1
- illuminate/support: ^9.0|^10.0|^11.0|^12.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0|^9.0|^10.0
- phpunit/phpunit: ^9.5.10|^10.0.7|^11.5.3
README
A Laravel package to log model events (created, updated, deleted) to a database table, with hybrid model registration.
Features
- ✅ Hybrid Model Registration: Use trait or config file to register models
- ✅ Event Logging: Log created, updated, and deleted events
- ✅ Flexible Configuration: Customize events and retention periods
- ✅ Cleanup Command: Remove old logs automatically
- ✅ Laravel 9, 10, 11, 12 Support: Compatible with multiple Laravel versions
- ✅ PHP 8.1+ Support: Modern PHP features
Installation
composer require sdkwala/laravel-activity-logger
Publish Config & Migration
php artisan vendor:publish --provider="Sdkwala\ActivityLogger\ActivityLoggerServiceProvider"
php artisan migrate
Usage
1. Using the Trait
Add the trait to any Eloquent model:
<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Sdkwala\ActivityLogger\Traits\LogsActivity; class Post extends Model { use LogsActivity; protected $fillable = ['title', 'content']; }
2. Using the Config File
List model class names in config/activity-logger.php
:
<?php return [ 'models' => [ App\Models\Post::class, App\Models\User::class, App\Models\Comment::class, ], // ... other config ];
3. Viewing Activity Logs
use Sdkwala\ActivityLogger\Models\ActivityLog; // Get all activity logs $logs = ActivityLog::all(); // Get logs for a specific model $postLogs = ActivityLog::where('model_type', Post::class) ->where('model_id', $post->id) ->get(); // Get logs by event type $createdLogs = ActivityLog::where('event', 'created')->get();
Cleanup Old Logs
Delete logs older than 30 days (default):
php artisan sdkwala:activity-logger:cleanup
Or specify days:
php artisan sdkwala:activity-logger:cleanup --days=60
Configuration
The configuration file config/activity-logger.php
contains:
<?php return [ // List of model class names to observe for activity logging 'models' => [ // App\Models\Post::class, ], // Events to log 'events' => [ 'created', 'updated', 'deleted', ], // Default retention for cleanup command (in days) 'cleanup_retention_days' => 30, ];
Database Schema
The activity_logs
table contains:
id
- Primary keymodel_type
- Full class name of the modelmodel_id
- ID of the model instanceevent
- Event type (created, updated, deleted)old_values
- JSON of previous values (for updates)new_values
- JSON of new valuesuser_id
- ID of the authenticated user (if any)created_at
- Timestamp of the activity
Testing
composer test
Contributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature
) - Commit your changes (
git commit -m 'Add some amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
License
The MIT License (MIT). Please see License File for more information.