2

我安装了 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 工作。任何的想法?

4

2 回答 2

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);
//缓冲
ob_start();

在记录器消息之前。

也在之后

// 冲洗
$channel->flush();
$response->sendHeaders();
于 2011-03-16T07:38:48.437 回答
2

好吧,实际上这两个代码片段之间的主要区别在于,在 FirePHP 代码中您打开了输出缓冲(通过obstart();调用),而在 Zend Framework 代码片段中您没有。让它与 Zend 一起工作的最简单方法可能是将output_bufferingphp.ini 中的标志设置为 On(如果您不想全局设置,可以在虚拟主机定义或使用 apache 时的 htaccess 中执行此操作)。

我只是在我的 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)的情况下工作。

于 2011-03-16T08:21:03.770 回答