2013-06-02 40 views
4

在Zend Framework 2.2.0中,一堆new abstract factories have been added。我想配置一個數據庫記錄器,但我不知道如何做到這一點。鏈接給出了配置流記錄器的下面的例子:ZF2:配置新的抽象工廠

'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\Dbconstructor時,它需要傳遞適配器實例。我不確定如何在沒有製造工廠的情況下做到這一點,因爲我的數據庫適配器本身使用抽象工廠; Zend\Db\Adapter\AdapterServiceFactory。這似乎要求我訪問配置文件中的服務管理器來獲取數據庫適配器,以便將其注入到數據庫寫入器中。我不確定這是否可能。

我可以做一個自定義工廠就好,但我喜歡這些一致的抽象工廠的想法;我只是對如何使用它們感到困惑。

回答

2

您還需要啓用創建記錄器的抽象工廠,例如,用以下配置

// ... snip ... 
'service_manager' => array(             
    'abstract_factories' => array(           
     'Zend\Log\LoggerAbstractServiceFactory',        
    ),                  
) 
// ... snip ...