rast / activity-log
A simple activity log package that logs to file with model trait and log viewer UI
Installs: 12
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 0
Forks: 0
Open Issues: 0
pkg:composer/rast/activity-log
Requires
- php: >=8.0
README
A lightweight Laravel package for logging model activities (create, update, delete) into log files with a built-in viewer UI.
๐ฆ Features
- Logs created, updated, and deleted events.
- Detects changed attributes only (for update).
- Logs to dedicated storage/logs/activity-YYYY-MM-DD.log.
- Includes Laravel Blade log viewer page.
- Supports filters (date, action, search).
- Plug-and-play trait
HasRastActivityLog.
๐ Installation
composer require rast/activity-log
Laravel will automatically discover the service provider.
โ๏ธ Configuration (Optional)
Publish config:
php artisan vendor:publish --tag=activitylog-config
This publishes:
config/activitylog.php
Inside the file:
return [ 'enabled' => true, 'channel' => 'activity', 'days' => 30, ];
๐งฉ Usage
1. Add the Trait to Any Model
use RAST\ActivityLog\Traits\HasRastActivityLog; class Post extends Model { use HasRastActivityLog; protected $fillable = ['title', 'content']; protected $logAttributes = ['title', 'content']; }
For users:
class User extends Authenticatable { use HasRastActivityLog; protected $logAttributes = ['name', 'email']; }
๐งช What Gets Logged?
1. Created Event
Writes full data.
2. Updated Event
Writes only changed fields.
3. Deleted Event
Writes full data.
Example log file:
storage/logs/activity-2025-11-21.log
๐ View Logs in Browser
Visit:
/activity-log
Includes filters:
- Date
- Action (create/update/delete)
- Search (model name, user ID, record ID)
๐ Log Structure
Each log entry example:
{
"action": "updated",
"model": "User",
"id": 3,
"changes": {
"email": {
"old": "old@mail.com",
"new": "new@mail.com"
}
},
"user_id": 1
}
๐ File Logging Channel
The package auto-registers a custom channel:
'activity' => [ 'driver' => 'single', 'path' => storage_path('logs/activity-' . date('Y-m-d') . '.log'), 'level' => 'info', ],
๐ License
This package is open-sourced under the MIT License.