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?

¿Fue útil?

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 :-)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a magento.stackexchange
scroll top