¿Cómo podemos imprimir la variable de matriz en el archivo de registro de Magento 2?


13

Estoy tratando de imprimir contenidos variables de matriz en un archivo de registro.

En Magento 1, era posible usar Mage::log(print_r($arr, 1), null, 'logfile.log');

Para Magento 2, en el archivo de clase he escrito el siguiente código:

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);
    }

Cuando ejecuto el código después de borrar la memoria caché, Debug.logy system.loglos archivos no están mostrando el contenido de la matriz.

Por favor, comparta si alguien tiene alguna idea al respecto.

Respuestas:


16

Supongamos que su matriz es

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

entonces tiene que escribir el siguiente código para escribir el formato de matriz adecuado en su archivo de registro

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

Se imprimirá en su archivo de registro

[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

Ver declaración del método de registro

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

Entonces, necesitas un código como

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

Yo mismo imprimiría_r ($ opciones, verdadero) en lugar de la codificación json. Pero las preferencias \ o /
Barry Carlyon

44
mejor aún:$this->_logger->debug(json_encode($options));
nevvermind

2

Este método me funciona bien.

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

Luego revise su system.logarchivo.


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') ));

}

Pruebe esto, imprimirá la matriz. Probado


0

Para la matriz y también el objeto solo use

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

public function logs(){

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

y verifique la salida en el /var/log/debug.logarchivo


0

Veo que el archivo principal usa 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));
    }
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.