Zend_Log_Writer_Firebug() не работает
У меня установлены 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 ответа
Попробуй с места
$request = new Zend_Controller_Request_Http(); $response = new Zend_Controller_Response_Http(); $channel = Zend_Wildfire_Channel_HttpHeaders::getInstance(); $ Channel-> SetRequest($ запроса); $ Channel->setResponse($ ответа); // буферизация ob_start ();
до сообщения регистратора.
также после
// промывка $ Channel-> заподлицо (); $ Response->sendHeaders();
Ну, на самом деле главное отличие между двумя фрагментами кода заключается в том, что в коде FirePHP вы включаете буферизацию вывода (с помощью obstart();
вызов), а во фрагменте кода Zend Framework вы этого не сделаете. Самый простой способ заставить его работать с Zend - это установить output_buffering
Отметьте в php.ini значение 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 (FF 3.6.15, Firebug 1.6.2, FirePHP 0.5.0).