¿Cómo imprimir el contenido de la matriz en el archivo de registro?
-
16-10-2019 - |
Pregunta
¿Cómo imprimir el contenido de la matriz en un archivo de registro en Magento CE 1.7 sin iterar a través de un bucle?
Solución
Mage::log(print_r($arr, 1), null, 'logfile.log');
Agregar un segundo parámetro a print_r devolverá una cadena con variable impresa.
EDITAR
Según los comentarios a continuación, me siento obligado a ofrecer otras opciones para registrar una matriz.
Mage::log($arr, null, 'logfile.log');
o si necesita un prefijo de cadena en la matriz
Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');
El segundo parámetro de Zend_Debug::dump()
es una etiqueta. Si esto no es null
Se agregará antes del volcado de la matriz.
El tercer parámetro de Zend_Debug::dump()
medio echo
. Si es true
entonces el resultado del volcado se eco, si es false
se devolverá como una cadena. En tu caso, lo necesitas para ser false
.
Otros consejos
¿Has intentado hacer solo?
Mage::log($array, null, 'logfile.log', true);
El método de registro de mago debe expandir la matriz que sí.
Como Petar señaló, se expande, por lo que si es una matriz o un objeto, no se necesita print_r. Pero si lo mezclas, como:
Mage::log('my string' . $array);
Obtiene un problema, porque la conversión de la matriz de phps a la cadena significa:
array(... whatever...) -> 'String'
Y con un objeto, PHP intenta llamar al método __ToString si esto no existe, se lanza un error (creo).
Y como referencia, Mage::log()
:
\Mage::log
/app/Mage.php:784
public static function log($message, $level = null, $file = '', $forceLog = false)
{
// ...
// initialize ... blah stuff...
// check wether logging is on, developer mode or logging is forced
try {
// get the file, define the format... more stuff ... blah ...
if (is_array($message) || is_object($message)) {
$message = print_r($message, true);
}
$loggers[$file]->log($message, $level);
}
catch (Exception $e) {
}
}
Nada probado :-)