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 }

しかし、循環参照エラーが発生しているので、他の人にこれを行うように言われました

ここに循環参照があります: doctrine.dbal.default_connection サービスを作成して doctrine.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 に答える