Я хочу добавить монолог в mongodb с обработчиком по умолчанию (MongoDBHandler) в Symfony 4.
мой файл monolog.yaml в папке dev
monolog:
handlers:
mongo:
type: mongo
mongo:
id: monolog.logger.mongo
host: '%env(MONGODB_URL)%'
database: '%env(MONGODB_DB)%'
collection: logs
мой services.yaml
services:
monolog.logger.mongo:
class: Monolog\Handler\MongoDBHandler
arguments: ['@doctrine_mongodb']
мой doctrine_mongodb.yaml
doctrine_mongodb:
auto_generate_proxy_classes: '%kernel.debug%'
auto_generate_hydrator_classes: '%kernel.debug%'
connections:
default:
server: '%env(MONGODB_URL)%'
options:
db: '%env(MONGODB_DB)%'
log:
server: '%env(MONGODB_URL)%'
options:
db: '%env(MONGODB_DB)%'
connect: true
default_database: '%env(MONGODB_DB)%'
document_managers:
log:
auto_mapping: false
logging: false
Но не работает.
одна из ошибок:
Cannot autowire service "monolog.logger.mongo": argument "$database" of method "Monolog\Handler\MongoDBHandler::__construct()" is type-hinted "string", you should configure its value explicitly.
Пока я использую опцию базы данных в конфигурации monolog.
Есть какой-нибудь документ?
Танки, да я очистил кеш Symfony.
У вас установлен MONGO_DB в вашем .env файле или в качестве переменной среды?
Да, я установил MONGO_DB в свой файл .env.

Другой способ включить mongodb для монолога:
monolog:
handlers:
mongo:
type: mongo
mongo:
host: '%env(MONGODB_URL)%'
user: myuser
pass: mypass
database: '%env(MONGODB_DB)%'
collection: logs
, Значит, вам нужно удалить поле id и вместо него добавить user и pass.
Если вы уже используете doctrine mongodb, можно повторно использовать его соединение, избегая дополнительных переменных ENV для разделения DSN:
monolog:
handlers:
mongo:
type: mongo
mongo:
id: "doctrine_mongodb.odm.default_connection"
database: "%env(MONGODB_DB)%"
collection: MyLogDocument # Keeping this the same, allows you to simply use a doctrine repository to access the documents in your app if needed
level: debug
определить "не работает"? какое-либо сообщение об ошибке? Вы очистили кеш Symfony?