0

我想使用本教程为独白创建自己的处理程序。

现在我的处理程序需要这样的 PDO 连接

$logger->pushHandler(new LogHandler(new PDO("mysql:host=$host;dbname=$dbname", $user, $pass)));
$logger->addInfo('My logger is now ready');

然后这个人告诉我将该连接作为服务插入

像这样

doctrine.dbal.default.wrapped_connection:
    factory_service: doctrine.dbal.default_connection
    factory_method: getWrappedConnection
    class: PDO

my.monologhandler.pdo:
    class: sojeans\BackBundle\Monolog\Handler\PDOHandler
    arguments:
        - '@doctrine.dbal.default.wrapped_connection'
    tags:
        - { name: log_handler }

但我收到循环引用错误,所以其他人告诉我这样做

这里有一个循环引用:您需要创建教义.dbal.default_connection 服务来创建教义.dbal.default.wrapped_connection``(因为它使用工厂服务)并且该服务使用记录器。

但我不知道该怎么做。

4

1 回答 1

1

尝试向您的学说配置添加一个没有调试或分析的新连接:

doctrine:
    dbal:
        connections:
            default:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
            logger:
                driver:   %database_driver%
                host:     %database_host%
                port:     %database_port%
                dbname:   %database_name%
                user:     %database_user%
                password: %database_password%
                charset:  UTF8
                logging:   false
                profiling: false

然后使用新logger_connection服务:

doctrine.dbal.logger.wrapped_connection:
    factory_service: doctrine.dbal.logger_connection
    factory_method: getWrappedConnection
    class: PDO

my.monologhandler.pdo:
    class: sojeans\BackBundle\Monolog\Handler\PDOHandler
    arguments:
        - @doctrine.dbal.logger.wrapped_connection
    tags:
        - { name: log_handler }

让我知道这个是否奏效。

于 2012-08-13T13:40:33.693 回答