Laravel logs to database table via custom Monolog channel + Eloquent model.
- Run
composer require adamcrampton/laravel-database-loggerin your project directory - Add library service provider
AdamCrampton\LaravelDatabaseLogger\LogServiceProvider::classtoconfig\app.php - Run
php artisan migrateto set up thelogstable - In
config\logging.php, add a new channel for the custom logs:
'database' => [
'driver' => 'custom',
'via' => \AdamCrampton\LaravelDatabaseLogger\Services\LogMonoLog::class
]
]
- Update the log stack array in
config\logging.phpto include the new channel:
'stack' => [
'driver' => 'stack',
'channels' => ['daily', 'database'],
],
'database' => [
'driver' => 'custom',
'via' => \AdamCrampton\LaravelDatabaseLogger\Services\LogMonoLog::class
],
The package is pretty much a custom channel for Monolog, so you can use the existing facade and methods.
These columns are automatically populated when adding to the log:
descriptionThe log messageoriginThe origin value from the request headertypeLog type (log,store,change, ordelete)resultLog result (success,neutral, orfailure)levelLog message level (emergency,alert,critical,error,warning,notice,info, ordebug)
Additionally, you can pass in a category and sub_category value, which will be saved to those columns when generating a log entry. Example:
Log::info('test', ['category' => 'This is a category', 'sub_category' => 'This is a subcategory]);