Comment imprimer une variable de tableau dans le fichier journal de Magento 2?


13

J'essaie d'imprimer le contenu des variables du tableau dans un fichier journal.

Dans Magento 1, il était possible d'utiliser Mage::log(print_r($arr, 1), null, 'logfile.log');

Pour Magento 2, dans le fichier de classe, j'ai écrit le code suivant:

protected $_logger;

    public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }


private function getValuesAsHtmlList(\Magento\Framework\Object $object) {
        $options = $this->getOptions($object);
       //$this->_logger->addDebug($options );
        $this->_logger->log(100,null,$options);
    }

Lorsque j'exécute le code après avoir effacé le cache, les fichiers Debug.log& system.logn'affichent pas le contenu du tableau.

Veuillez partager si quelqu'un en a une idée.

Réponses:


16

Supposons que votre tableau soit

$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));

alors vous devez écrire ci-dessous le code pour écrire le format de tableau approprié dans votre fichier journal

$this->_logger->log(100,print_r($a,true));

Il imprimera dans votre fichier journal

[2015-11-09 06:58:27] main.DEBUG: Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )

)
 {"is_exception":false} []

10

Voir la méthode de déclaration du journal

public function  \Psr\Log\LoggerInterface::log($level, $message, array $context = array());

Donc, vous avez besoin d'un code comme

$this->_logger->log(100, json_encode($options));

J'imprimerais moi-même ($ options, true) au lieu du codage json. Mais les préférences \ o /
Barry Carlyon

4
mieux encore:$this->_logger->debug(json_encode($options));
nevvermind

2

Cette méthode fonctionne bien pour moi.

$this->logger->info(print_r($myArray, true));

Vérifiez ensuite votre system.logdossier.


0
protected $_logger;

    public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }

public function logs(){
  $level='log';
$this->_logger->log($level,'errorlog1234', array( array('test1'=>'123', 'test2' => '456'), array('a'=>'b') ));

}

Essayez ceci, il imprimera le tableau. Testé!


0

Pour les tableaux et les objets, utilisez simplement

public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }

public function logs(){

$this->logger->info(print_r($orderData, true));
}

et vérifier la sortie dans le /var/log/debug.logfichier


0

Je vois que le fichier principal utilise var_export:

//File: vendor/magento/module-paypal/Model/AbstractIpn.php
/**
 * Log debug data to file
 *
 * @return void
 */
protected function _debug()
{
    if ($this->_config && $this->_config->getValue('debug')) {
        $this->logger->debug(var_export($this->_debugData, true));
    }
}
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.