Wie drucke ich Array-Inhalte in eine Protokolldatei in Magento CE 1.7, ohne eine Schleife zu durchlaufen?
quelle
Wie drucke ich Array-Inhalte in eine Protokolldatei in Magento CE 1.7, ohne eine Schleife zu durchlaufen?
Mage::log(print_r($arr, 1), null, 'logfile.log');
Wenn Sie print_r einen zweiten Parameter hinzufügen, wird eine Zeichenfolge mit einer gedruckten Variablen zurückgegeben.
[BEARBEITEN]
basierend auf den Kommentaren unten fühle ich mich verpflichtet, andere Optionen zum Protokollieren eines Arrays anzubieten.
Mage::log($arr, null, 'logfile.log');
oder wenn Sie ein String-Präfix für das Array benötigen
Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');
Der zweite Parameter von Zend_Debug::dump()
ist eine Bezeichnung. Ist dies nicht null
der Fall, wird es vor dem Array-Dump hinzugefügt.
Der dritte Parameter der Zend_Debug::dump()
Mittelwerte echo
. Wenn dies der true
Fall ist, wird das Dump-Ergebnis als Echo ausgegeben, wenn dies der false
Fall ist , wird es als String zurückgegeben. In deinem Fall musst du es sein false
.
print_r
hier nicht brauchen , Magentos Logger wird Arrays und Objekte automatisch erweiternprint_r
möglicherweise die bessere WahlZend_Debug::dump($var)
.Haben Sie versucht, nur zu tun:
Mage::log($array, null, 'logfile.log', true);
Die Mage-Log-Methode sollte das Array selbst erweitern.
quelle
Wie Petar betonte, wird es erweitert, sodass kein print_r benötigt wird, wenn es sich um ein Array oder ein Objekt handelt. Aber wenn Sie es mischen, wie:
Sie bekommen ein Problem, weil die Umwandlung von PHP-Array in String bedeutet:
Und mit einem Objekt versucht PHP, die __toString-Methode aufzurufen, wenn diese nicht existiert, wird ein Fehler ausgegeben (glaube ich).
Und als Referenz
Mage::log()
:Nichts getestet :-)
quelle