我想使用this tutorial为monolog创建自己的处理程序。
现在我的处理程序需要像这样的PDO连接
$logger->pushHandler(new LogHandler(new PDO("mysql:host=$host;dbname=$dbname", $user, $pass)));
$logger->addInfo('My logger is now ready');
然后this guy告诉我将该连接作为服务插入
喜欢这个
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``(因为它是一个工厂服务),这个服务使用记录器。 / p>
但我不知道该怎么做。
答案 0 :(得分: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 }
让我知道这是否有效。