Installation & setup
You can install the package via composer:
composer require spatie/laravel-notification-log
You can publish and run the migrations with:
php artisan vendor:publish --tag="notification-log-migrations"
php artisan migrate
##Publishing the config file
Optionally, you can publish the config file with:
php artisan vendor:publish --tag="notification-log-config"
This is the contents of the published config file:
return [
/*
* This model will be used to log all sent notifications
*/
'model' => Spatie\NotificationLog\Models\NotificationLogItem::class,
/*
* Log items older than this number of days will be automatically be removed.
*
* This feature uses Laravel's native pruning feature:
* https://laravel.com/docs/10.x/eloquent#pruning-models
*/
'prune_after_days' => 30,
/*
* If this is set to true, any notification that does not have a
* `shouldLog` method will be logged.
*/
'log_all_by_default' => config('notification-log.log_all_by_default'),
/*
* By overriding these actions, you can make low level customizations. You can replace
* these classes by a class of your own that extends the original.
*
*/
'actions' => [
'convertEventToModel' => Spatie\NotificationLog\Actions\ConvertNotificationSendingEventToLogItemAction::class
],
/*
* The event subscriber that will listen for the notification events fire by Laravel.
* In most cases, you don't need to touch this. You could replace this by
* a class of your own that extends the original.
*/
'event_subscriber' => Spatie\NotificationLog\NotificationEventSubscriber::class,
];
##Pruning results
This package will store all sent notifications in the notification_log_items
table. The related NotificationLogItems
models uses the Laravel's MassPrunable
trait. In the notification-log
config file, you can specify the maximum age of a model in the prune_after_days
key. Don't forget to schedule the model:prune
command, as instructed in Laravel's docs. You'll have to explicitly add the model class:
// in app/Console/Kernel.php
class Kernel extends ConsoleKernel
{
protected function schedule(Schedule $schedule)
{
$schedule->command('model:prune', [
'--model' => [
\Spatie\NotificationLog\Models\NotificationLogItem::class,
],
])->daily();
// ...
}
}