Comment imprimer le contenu du tableau dans le fichier journal?
-
16-10-2019 - |
Question
Comment imprimer le contenu du tableau dans un fichier journal dans magento CE 1.7 sans itérer une boucle?
La solution
Mage::log(print_r($arr, 1), null, 'logfile.log');
Ajout d'un second paramètre à print_r retourne une chaîne contenant variables imprimées. < br> [EDIT] sur la base des commentaires ci-dessous je me sens obligé d'offrir d'autres options pour l'enregistrement d'un tableau.
Mage::log($arr, null, 'logfile.log');
ou si vous avez besoin d'un préfixe de chaîne au tableau
Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');
Le second paramètre de Zend_Debug::dump()
est une étiquette. Si cela est null
pas, il sera ajouté à la décharge avant de tableau.
Le troisième paramètre de Zend_Debug::dump()
signifie echo
. Si elle est true
alors le résultat de vidage sera repris, si elle est false
il sera retourné comme une chaîne. Dans votre cas, vous avez besoin d'être false
.
Autres conseils
Avez-vous essayé de le faire:
Mage::log($array, null, 'logfile.log', true);
méthode Mage journal devrait élargir le tableau en lui-même.
Petar a souligné, il est détendu, donc si elle est un tableau ou un objet, il n'y a pas print_r nécessaire. Mais si vous mélangez, comme:
Mage::log('my string' . $array);
vous obtenez un problème, car tableau phps moyens de conversion de chaîne:
array(... whatever...) -> 'String'
Et avec un objet, PHP tente d'appeler la méthode __toString si cela n'existe pas, une erreur est renvoyée (je pense).
Et pour référence, 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) {
}
}
Rien testé: -)