Zend_Log_Writer_Firebug()无效

时间:2011-03-16 07:28:55

标签: php zend-framework firephp

我安装了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核心库,这有效 -

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

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

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

想让Zend的东西运转起来。有什么想法吗?

2 个答案:

答案 0 :(得分:6)

尝试使用地方

$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();

答案 1 :(得分:2)

嗯,实际上代码的两个片段之间的主要区别在于,在FirePHP代码中,您正在启用输出缓冲(使用obstart();调用),而在Zend Framework代码片段中则不然。让它与Zend一起工作的最简单方法可能是将php.ini中的output_buffering标志设置为On(如果你不想设置,你可以在虚拟主机定义或htaccess中使用apache全球)。

我只是在我的Bootstrap中使用它:

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

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

然后使用Zend_Registry::get('logger')->log(...);并将其与output_buffering设置为on(FF 3.6.15,Firebug 1.6.2,FirePHP 0.5.0)。