Сохранение монолога в mongodb в symfony 4

Я хочу добавить монолог в 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?

Cid 15.01.2019 09:08

Танки, да я очистил кеш Symfony.

ShahRokh 15.01.2019 09:18

У вас установлен MONGO_DB в вашем .env файле или в качестве переменной среды?

yivi 16.01.2019 18:37

Да, я установил MONGO_DB в свой файл .env.

ShahRokh 17.01.2019 07:13
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
0
4
970
2

Ответы 2

Другой способ включить 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

Другие вопросы по теме