[英]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.