This package gives opportunity logging to mongodb with custom Laravel logging
Package jenssegers/laravel-mongodb is required
composer require nechaienko/laravel-mongodb-logging
Add configurations to file ..\your_project\config\logging.php
'mogodb-channel' => [
'driver' => 'custom',
'via' => \Nechaienko\MongodbLogging\LogToMongoDb::class,
'level' => 'info',
'connection' => 'mongodb',
'collection' => 'logs',
],
'mogodb-channel' => [
...
'additional_fields' => [
'environment' => config('app.env'),
...
],
],
You can override model from package and change fields format with Laravel mutators
- Create your model and override needed method
namespace App\Services\Logging;
use Nechaienko\MongodbLogging\MongoDbModel as ParentMongoDbModel;
class MongoDbModel extends ParentMongoDbModel
{
public function setDatetimeAttribute($value)
{
...
$this->attributes['datetime'] = $resultValue;
}
}
- Add your model to confs
'mogodb-channel' => [
...
'custom_model' => \App\Services\Logging\MongoDbModel::class,
],
You can define fields to set by overriding constant FIELDS_TO_SET
namespace App\Services\Logging;
use Nechaienko\MongodbLogging\MongoDbModel as ParentMongoDbModel;
class MongoDbModel extends ParentMongoDbModel
{
public const FIELDS_TO_SET = [
'message',
'level_name',
'datetime',
'extra',
];
}
use Illuminate\Support\Facades\Log;
...
Log::channel('mogodb-channel')->info('message');