2 Stimmen

FirePHP schreibt nicht immer Logmeldungen

Ich habe meine Logger in meiner Bootstrap.php wie folgt eingerichtet:

 $logger = new Zend_Log();
    if($environment->debug == '1')
    {
        $stream = @fopen('/var/www/html/rta/rta.log','a',false);
        if(!$stream){ throw new Exception('Failed to open log stream'); }
        $writer = new Zend_Log_Writer_Stream($stream);
        $logger->addWriter($writer);
        $logger->addWriter(new Zend_Log_Writer_Firebug());
    }
    else
    {
        // Do something else
    }
    Zend_Registry::set('logger',$logger);

Ich habe den folgenden Code, den ich so eingestellt habe, dass er fehlschlägt:

$data = array(
            'config_id'      => $config->getConfigId(),
            'pass_column'    => $config->getPassColumn(),
            'filename'       => $config->getFilename(),
            'date_format'    => $config->getDateFormat(),
            'mapping_config' => $config->getMappingConfig(),
            'config_name'    => $config->getConfigName(),
            'client_id'      => $config->getClientId(),
            'description'    => $config->getDescription(),
        );

        $where = $this->getDbTable()->getAdapter()->quoteInto('config_id = ?',$config->getConfigId());
        $where = null;
        try
        {
            $this->getDbTable()->update($data,$where);
        }catch(Exception $e)
        {
            Zend_Registry::get('logger')->err('Could not update configuration.');
            Zend_Registry::get('logger')->err($e);
            return false;
        }
        return true;

Ich habe zwei Protokollschreiber eingestellt: Stream und FirePHP. Der Stream-Protokollschreiber hat die Ausnahme erfolgreich abgefangen und geschrieben, aber FirePHP hat nichts getan. Wenn ich andere Protokollmeldungen an anderen Stellen in meinem Code einfüge, z. B. indexAction werden diese in beiden Fällen gut angezeigt. Übersehe ich etwas?

EDIT Der Fehlercode befindet sich in meinem Datenbank-Mapper, nicht in einem Controller. Könnte es sein, dass er keinen Zugriff auf die HTTP-Header hat?

1voto

ashurexm Punkte 6121

Das folgende Beispiel zeigt, wie man FirePHP dazu bringt, die benötigten Header-Informationen zu erhalten, ohne den FrontController zu verwenden.

    // create the logger and log writer
    $writer = new Zend_Log_Writer_Firebug();
    $logger = new Zend_Log($writer);

    // get the wildfire channel
    $channel = Zend_Wildfire_Channel_HttpHeaders::getInstance();

    // create and set the HTTP response
    $response = new Zend_Controller_Response_Http();
    $channel->setResponse($response);

    // create and set the HTTP request
    $channel->setRequest(new Zend_Controller_Request_Http());

    // record log messages
    $logger->info('info message');
    $logger->warn('warning message');
    $logger->err('error message');

    // insert the wildfire headers into the HTTP response
    $channel->flush();

    // send the HTTP response headers
    $response->sendHeaders();
?>

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X