在Zend Framework 2.2.0中,有一堆new abstract factories have been added。我想配置一个数据库记录器,但我不知道如何做到这一点。该链接提供了以下配置流记录器的示例:
'log' => array(
'Application\Log' => array(
'writers' => array(
array(
'name' => 'stream',
'priority' => 1000,
'options' => array(
'stream' => 'data/logs/app.log',
),
),
),
),
),
我尝试将配置复制到config/global.php
,我也尝试将其嵌套在service_manager
键下。它说我应该能够直接从服务管理器获取记录器,但是我得到一个错误,说它无法创建Application\Log
的实例。我在这里误解了什么吗?应该在哪里添加配置?
另外,在我的具体示例中,我想使用数据库编写器。如何配置与上面相似的样式(即使用数组)?查看Zend\Writer\Db
constructor时,需要传递适配器实例。我不知道如何在没有工厂的情况下这样做,因为我的数据库适配器本身使用的是抽象工厂; Zend\Db\Adapter\AdapterServiceFactory
。这似乎要求我访问配置文件中的服务管理器以获取数据库适配器,以便将其注入数据库编写器。我不确定这是否可能。
我可以做一个定制工厂,但我喜欢这些一致的抽象工厂的想法;我对如何使用它感到困惑。
答案 0 :(得分:2)
您还需要启用创建记录器的抽象工厂,例如使用以下配置
// ... snip ...
'service_manager' => array(
'abstract_factories' => array(
'Zend\Log\LoggerAbstractServiceFactory',
),
)
// ... snip ...