2

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

例如,使用以下配置:

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

初始化记录器的正常方法是使用应用程序引导资源或执行以下操作:

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

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

4

2 回答 2

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

应该管用。parse_ini_file()(由 使用Zend_Config_Ini)允许使用常量 - 但连接不像 PHP(使用.运算符)那样工作;只需将静态字符串附加到常量(您可能需要额外的/ifAPPLICATION_PATH不以 a 结尾/)。

于 2010-11-11T08:15:54.417 回答
1

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

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

于 2010-11-11T08:12:00.523 回答