Respuestas:
Mage::log(print_r($arr, 1), null, 'logfile.log');
Agregar un segundo parámetro a print_r devolverá una cadena con variable impresa.
[EDITAR]
basado en 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 para 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 no es null
así, se agregará antes del volcado de la matriz.
El tercer parámetro de Zend_Debug::dump()
medias echo
. Si es así, true
el resultado del volcado se repetirá, si es false
así, se devolverá como una cadena. En tu caso necesitas que sea false
.
print_r
aquí, el registrador de Magento expandirá automáticamente los arreglos y los objetos
print_r
, una mejor opción podría ser usar Zend_Debug::dump($var)
.
¿Has intentado hacer solo:
Mage::log($array, null, 'logfile.log', true);
El método de registro de mago debería expandir la matriz por sí mismo.
Como señaló Petar, se expande, por lo que si se trata de una matriz o un objeto, no se necesita print_r. Pero si lo mezclas, como:
Mage::log('my string' . $array);
tiene un problema, porque la conversión de matriz phps a cadena significa:
array(... whatever...) -> 'String'
Y con un objeto, php intenta llamar al método __toString si esto no existe, se produce un error (creo).
Y para 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 :-)