spatie/laravel-activitylog
Log user and model activity in Laravel with a simple API. Automatically record Eloquent events, track subjects and causers, attach custom properties, and query everything via the Activity model. Stores logs in the activity_log table.
saved, deleted) for automatic activity capture, reducing boilerplate.performedOn(), causedBy(), etc.).Model::saved() triggers automatic logs).clean_after_days to purge old logs; disable logging for non-critical actions (activity()->disableLogging()).Activity model or modify the migration.include_soft_deleted_subjects or handle deletions via model observers.UPGRADING.md and test thoroughly in staging.ACTIVITYLOG_ENABLED=false in staging)?clean_after_days value? (Default: 365 days)Activity model be extended for additional fields (e.g., log_type)?causedBy(auth()->user())).created, updated, deleted).activity_log) but extensible.Activity::all() in unit tests).composer require spatie/laravel-activitylog
php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-migrations"
php artisan migrate
subject_id/causer_id types if using UUIDs or non-integer IDs.php artisan vendor:publish --provider="Spatie\Activitylog\ActivitylogServiceProvider" --tag="activitylog-config"
config/activitylog.php (e.g., clean_after_days, default_except_attributes).use Spatie\Activitylog\Traits\LogsActivity;
class User extends Model {
use LogsActivity;
}
activity()->performedOn($post)->causedBy($user)->log('Published post');
$this->assertCount(1, Activity::all());
$this->assertEquals('Published post', Activity::first()->description);
composer.json for supported versions.actions, activity_model).Activity model for additional fields or logic.created, deleted).clean_after_days, default_except_attributes).UPGRADING.md; test in staging (e.g., v4→v5 may require schema changes).activity_log table growth; adjust clean_after_days as needed.laravel-model-activity).causer is resolvable).Activity::all() or query scopes (e.g., Activity::where('description', 'like', '%published%')).Activity model or create custom actions for edge cases (e.g., logging API requests).Spatie\Activitylog\Events\Logging events).activity_log (e.g., causer_id, created_at).Activity::all() is frequent.| Failure Scenario | Impact | Mitigation |
|---|---|---|
| Database downtime | Logs lost during outages. | Use transactions or queue failed logs for retry. |
activity_log table corruption |
Inconsistent or missing logs. | Regular backups; monitor DB health. |
| Auth system failures | causer field populated incorrectly. |
Fallback to manual logging or IP-based attribution. |
| High logging volume | DB performance degradation. | Implement rate limiting (e.g., `clean_after |
How can I help you explore Laravel packages today?