繁体   English   中英

Zend框架中Zend_Log的相对路径

[英]Relative path for Zend_Log in Zend Framework

我正在尝试找出配置Zend_Log_Writer_Stream实例以写入相对于我的APPLICATION_PATH的文件名的最佳方法。

例如,使用以下配置:

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继承类的工厂方法来完成这项工作。

我很想听听其他人如何解决这个问题。

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

应该管用。 parse_ini_file() (由Zend_Config_Ini )允许使用常量-但级联不能像PHP(使用.运算符)那样工作; 只是追加静态字符串常量(你可能需要一个额外的/如果APPLICATION_PATH不以结尾/ )。

Zend_Config_Ini内部使用parse_ini_file读取application.ini 这意味着,它应该解析常量。 请尝试使用您的理想方法。 确保在加载应用程序之前定义了常量。

编辑:另请参阅有关使用正确格式的Stefan Gehrig的说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM