2010-11-11 128 views
2

我正在嘗試解決配置我的Zend_Log_Writer_Stream實例以寫入相對於我的APPLICATION_PATH的文件名的最佳方法。Zend Framework中Zend_Log的相對路徑

例如,以下配置:

resources.log.stream.writerName = "Stream" 
resources.log.stream.writerParams.stream = "logs/production.log" 

的正常方式初始化你loggger將是要麼使用應用程序引導資源或執行以下操作:

$logger = Zend_Log::factory($config->resources->log); 

的問題這是Zend_Log_Writer_Stream :: factory方法將嘗試訪問相對於當前腳本執行的文件,而不是APPLICATION_PATH。

因爲它幾乎總是內部/ public的index.php,通常這不是戲劇,但是當我在單元測試目錄中執行單獨的腳本時,它將使用該目錄來基於路徑。

理想我希望能夠設置:

resources.log.stream.writerParams.stream = APPLICATION_PATH . "../logs/production.log" 

因此,它總是使用可預測的位置。我寧願不必破解Zend_Log繼承類的工廠方法來使其工作。

我很想聽聽別人如何解決這個問題。

回答

6
resources.log.stream.writerParams.stream = APPLICATION_PATH "../logs/production.log" 

應該工作。 parse_ini_file()(使用Zend_Config_Ini)允許使用常量 - 但級聯在PHP中不起作用(使用.運算符);只需將靜態字符串附加到常量(如果APPLICATION_PATH未以/結尾,則可能需要額外的/)。

+0

感謝您指出,我是如此接近:-) – 2010-11-12 00:12:50

1

Zend_Config_Ini使用parse_ini_file在內部閱讀application.ini。這意味着,它應該解析常量。請嘗試你的理想方法。確保常數加載的application.ini

編輯之前定義的:又見斯特凡格里克的備註格式正確使用