Description
- Laravel Version: 5.6.*
- PHP Version: 7.1
- Database Driver & Version: MongoDB 3.2
Description:
My config/logging.php
:
'channels' => [
'stack' => [
'driver' => 'stack',
'channels' => ['single', 'mongo'],
],
...
'mongo' => [
'driver' => 'monolog',
'handler' => \Monolog\Handler\MongoDBHandler::class,
'handler_with' => [
'mongo' => new MongoDB\Client(),
'database' => 'logs',
'collection' => 'test'
]
]
],
My .env
: LOG_CHANNEL=stack
.
I'm sure that MongoDB database logs
exists, test
collection too.
I'm trying to execute php artisan config:cache
, I get an error:
Expected $document to have type "array or object" but found "string"
Full trace:
Expected $document to have type "array or object" but found "string" {"exception":"[object] (MongoDB\Exception\InvalidArgumentException(code: 0): Expected $document to have type "array or object" but found "string" at path_to_my_project\vendor\mongodb\mongodb\src\Exception\InvalidArgumentException.php:32)
[stacktrace]
#0 path_to_my_project\vendor\mongodb\mongodb\src\Operation\InsertOne.php(70): MongoDB\Exception\InvalidArgumentException::invalidType('$document', '[2018-08-09 22:...', 'array or object')
#1 path_to_my_project\vendor\mongodb\mongodb\src\Collection.php(889): MongoDB\Operation\InsertOne->__construct('logs', 'prod', '[2018-08-09 22:...', Array)
#2 path_to_my_project\vendor\monolog\monolog\src\Monolog\Handler\MongoDBHandler.php(46): MongoDB\Collection->insertOne('[2018-08-09 22:...')
#3 path_to_my_project\vendor\monolog\monolog\src\Monolog\Handler\AbstractProcessingHandler.php(37): Monolog\Handler\MongoDBHandler->write(Array)
#4 path_to_my_project\vendor\monolog\monolog\src\Monolog\Logger.php(337): Monolog\Handler\AbstractProcessingHandler->handle(Array)
#5 path_to_my_project\vendor\monolog\monolog\src\Monolog\Logger.php(616): Monolog\Logger->addRecord(400, 'Your configurat...', Array)
#6 path_to_my_project\vendor\laravel\framework\src\Illuminate\Log\Logger.php(176): Monolog\Logger->error('Your configurat...', Array)
#7 path_to_my_project\vendor\laravel\framework\src\Illuminate\Log\Logger.php(87): Illuminate\Log\Logger->writeLog('error', 'Your configurat...', Array)
#8 path_to_my_project\vendor\laravel\framework\src\Illuminate\Log\LogManager.php(526): Illuminate\Log\Logger->error('Your configurat...', Array)
#9 path_to_my_project\vendor\laravel\framework\src\Illuminate\Foundation\Exceptions\Handler.php(113): Illuminate\Log\LogManager->error('Your configurat...', Array)
#10 path_to_my_project\app\Exceptions\Handler.php(41): Illuminate\Foundation\Exceptions\Handler->report(Object(LogicException))
#11 path_to_my_project\vendor
unomaduro\collision\src\Adapters\Laravel\ExceptionHandler.php(60): App\Exceptions\Handler->report(Object(LogicException))
#12 path_to_my_project\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(353): NunoMaduro\Collision\Adapters\Laravel\ExceptionHandler->report(Object(LogicException))
#13 path_to_my_project\vendor\laravel\framework\src\Illuminate\Foundation\Console\Kernel.php(124): Illuminate\Foundation\Console\Kernel->reportException(Object(LogicException))
#14 path_to_my_project\artisan(37): Illuminate\Foundation\Console\Kernel->handle(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
#15 {main}
"}
What's wrong? I guess, my config was amde accordingly to documentation.
What I've tried so far:
'mongo' => [
'driver' => 'monolog',
'handler' => \Monolog\Handler\MongoDBHandler::class,
]
same error.
'mongo' => [
'driver' => 'monolog',
'handler' => new \Monolog\Handler\MongoDBHandler(new MongoDB\Client(),'logs', 'test'),
]
LogicException : Your configuration files are not serializable.