質問

Firefox 3.6.15、FirebugおよびFirephpアドオンがインストールされ、コンソールが有効になっています。 Zend 1.11を使用しています。次のコードには、FireBugコンソールには何も表示されません。

<?php
    require_once('Zend/Log.php');
    require_once('Zend/Log/Writer/Firebug.php');

    $writer = new Zend_Log_Writer_Firebug();
    $logger = new Zend_Log($writer);

    $logger->info('info message');
    $logger->warn('warning message');
    $logger->err('error message');
?>

Firephp Core Libraryで試してみましたが、これは機能します -

<?php
     require_once('FirePHPCore/FirePHP.class.php');
     ob_start();

     $firephp = FirePHP::getInstance(true); 
     $var = array('i'=>10, 'j'=>20);

     $firephp->log($var, 'Iterators');
?>

Zendのものを機能させたいです。何か案が?

役に立ちましたか?

解決

場所で試してみてください

$request = new Zend_Controller_Request_Http();
$response = new Zend_Controller_Response_Http();
$channel = Zend_Wildfire_Channel_HttpHeaders::getInstance();
$channel->setRequest($request);
$channel->setResponse($response);
//buffering
ob_start();

ロガーメッセージの前。

また、その後

// flushing
$channel->flush();
$response->sendHeaders();

他のヒント

まあ、実際には、コードの2つの断片の主な違いは、FirePhpコードでは、出力バッファリングをオンにしていることです( obstart(); call)and Zend Frameworkコードフラグメントではありません。それをZendで動作させる最も簡単な方法は、おそらく output_buffering PHP.iniからオンにフラグを立てます(グローバルに設定したくない場合は、Apacheを使用する場合、仮想ホスト定義またはHTACCESSでそれを行うことができます)。

私はこれを私のブートストラップで使用するだけです:

protected function _initLogger()
{
    $writer = new Zend_Log_Writer_Firebug();
    $logger = new Zend_Log($writer);

    Zend_Registry::set('logger', $logger);
}

そして、使用します Zend_Registry::get('logger')->log(...); また、ON(FF 3.6.15、FireBug 1.6.2、FirePhp 0.5.0)に設定されたoutput_bufferingで動作します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top