2017-06-05 8 views
1

J'ai des problèmes pour consigner un "TypeError" avec log4php. Je pense que c'est parce que j'ai récemment mis à jour de php 5.5 à 7.1.log4php + PHP 7 - accrochage et journalisation Throwable

Habituellement, ma syntaxe ressemble à ceci:

<? 

use Logger; 

class MyClass 
{ 
    /** @var Logger */ 
    private $logger; 

    function __construct(array $configParams) 
    { 
     Logger::configure('logger.xml'); 
     $this->logger = Logger::getLogger(__CLASS__); 
    } 

    public function dostuff() 
    { 
     try 
     { 
      // ... 
     } 
     catch (Exception $ex) 
     { 
      $this->logger->error("ERROR CAUGHT", $ex); 
     } 
    } 
} 

?> 

La syntaxe ci-dessus imprimera beaucoup d'informations dans le fichier journal, y compris une trace de la pile. Cependant, après avoir lu les derniers documents php7, je crois que je suis censé gérer l'interface \ Throwable, afin d'attraper les erreurs et les exceptions (ce qui est génial). Donc, je remplace les prises ci-dessus avec les éléments suivants:

catch (\Throwable $ex) 

Cette imprime encore des informations trace pile pour mes exceptions, mais quand un « TypeError » est pris, rien est imprimé dans le fichier journal. Je suppose que cela est dû à log4php ne sachant pas comment enregistrer les erreurs.

Comment puis-je enregistrer les erreurs en utilisant log4php de manière universelle?

Merci,

Répondre

1

Je pense que vous devriez utiliser $ex->getMessage() d'erreur() méthode votre code doit être

catch (Exception $ex) 
     { 
      $this->logger->error("ERROR CAUGHT", $ex->getMessage()); 
     } 

Pour trace d'enregistrement vous devez utiliser trace

catch (Exception $ex) 
      { 
       $this->logger->trace("ERROR CAUGHT", $ex); 
      } 
+0

Mais alors pas de pile-trace :( – mils

+0

@mils Je suis édité répondre pour la trace de la trace –

0

Essayez de résoudre ce problème

$this->logger->error("ERROR CAUGHT", $ex); 

avec

$this->logger->error("ERROR CAUGHT : " . $ex->getMessage()); 

documentation de log4php dit que la méthode d'erreur n'a qu'un seul paramètre.

+0

c'est un paramètre facultatif, voir (https://logging.apache.org/log4php/apidocs/class-Logger.html# _Erreur) – mils