1

私は独自の Zend_log を書いていますが、フォローするのに苦労しています。私ができるモジュール固有のログを生成する必要がありますが、これにより、グローバルな application.log も作成しています! 私はしたくない..

私のapplication.iniで

resources.log.stream.writerName = "Stream"
resources.log.stream.writerParams.stream = APPLICATION_PATH "/../logs/application.log"

ブートストラップコードがあります

if ($this->hasPluginResource("log"))
        {
            $r = $this->getPluginResource("log");
            $log = $r->getLog();
            Zend_Registry::set('log',$log);
        }

私のLoggerクラスでは、_streamを上書きして、ログが書き込まれるときに常に次のように単一のファイル.codeに書き込むようにしようとしています

$writerArr=array('stream'=>$logfile,'mode'=>'a');
$writer = Zend_Log_Writer_Stream::factory($writerArr);

しかし、構成ファイルにapplication.logを提供したので、常にapplication.logを作成しています!...

それらのストリームを上書きしたいのですが、方法がわかりませんか? 書き込むライター/ストリームが1つだけであることを保証する方法??...

または、application.ini とブートストラップ コードを削除することをお勧めしますが、ErrorController.php エラーを記録できません...

ErrorController.php によってスローされたエラーの "application.log" と App エラーの解決策を望んでいましたが、Logger クラスでエラーをログに記録したかったのですが、一度に 1 つのストリームを確保することはできません...

どんな手掛かり?

よろしく、

4

1 に答える 1

0

application.ini コード全体を削除して、ブートストラップ自体で zend_log を初期化してみてください。

$writer = new Zend_Log_Writer_Stream('[/your/log/file/path]', '[file_open_mode]');
$logger = new Zend_Log($writer);

どの場所に書き込むかがわかっているときにライターを初期化し、その後ロガー自体を初期化する場合に最適です。

于 2012-09-07T07:14:51.010 に答える