APPLICATION_PATHに相対的なファイル名に書き込むようにZend_Log_Writer_Streamインスタンスを構成するための最良の方法を見つけようとしています。
たとえば、次の設定を使用します。
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継承クラスのファクトリメソッドをハックする必要はありません。
他の人がこの問題をどのように解決したか聞いてみたいです。