2011-03-16 1 views
2

Firefox 3.6.15, Firebug 및 FirePHP 애드온이 설치되어 있고 콘솔이 활성화되어 있습니다. Zend 1.11을 사용하고 있습니다. 다음 코드는 방화 광 콘솔에 아무 것도 표시하지 않습니다.Zend_Log_Writer_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'); 
?> 

는 젠드 일이 작업을 좀하고 싶습니다. 어떤 생각?

답변

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

고맙습니다 ...이 작품 ... –

+1

나를 위해 일해도 더 짧은 버전이 없습니까? – Wiliam

2

글쎄 후, 코드의 두 조각 사이에 실제로 큰 차이는있는 FirePHP 코드는합니다 (obstart(); 호출로) 출력 버퍼링을 켜기하고 그와 젠드 프레임 워크 코드 당신이하지 않는 조각. 젠드에서 작동하게하는 가장 쉬운 방법은 php.ini의 output_buffering 플래그를 On으로 설정하는 것입니다 (가상 호스트를 설정하지 않으려는 경우 아파치를 사용할 때 가상 호스트 정의 또는 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(...);을 사용하고는 (방화범 1.6.2, FirePHP 0.5.0 FF 3.6.15)에 설정 output_buffering을 작동 :

난 그냥 내 부트 스트랩이 사용합니다.

+0

"긴"사람이 작동하는 동안이 해결책은 불행히도 작동하지 않습니다, 나는 FF, FBug 및 FPHP의 최신 버전을 가지고 있습니다. –

+1

매력처럼 작동합니다! FF 14.0.1, FB 1.10.2, FPHP 0.7.1 –