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.
After using the package for a while, you might have recorded a lot of activity. This package provides an artisan command activitylog:clean to clean the log.
Running this command will result in the deletion of all recorded activity that is older than the number of days specified in the clean_after_days key of the config file.
You can leverage Laravel's scheduler to run the clean up command now and then.
php artisan activitylog:clean
// routes/console.php
use Illuminate\Support\Facades\Schedule;
Schedule::command('activitylog:clean --force')->daily();
The --force flag is needed because the command will otherwise ask you to confirm the action when running in production. This is to prevent accidental data loss.
If you want to clean just one log, you can define it as a command argument. It will filter the log_name attribute of the Activity model.
php artisan activitylog:clean my_log_channel
You can define the days to keep for each call as a command option. This will overwrite the config for this run.
php artisan activitylog:clean --days=7
After cleaning, the database table might still use more space than expected. You can run the following MySQL commands to reclaim space:
OPTIMIZE TABLE activity_log;
or
ANALYZE TABLE activity_log;
*These SQL operations will lock read/write access to the database. Only run them when the server is in maintenance mode.
How can I help you explore Laravel packages today?