Frage

Wie drucken Sie Array -Inhalte in eine Protokolldatei in Magento CE 1.7, ohne eine Schleife durchzusetzen?

War es hilfreich?

Lösung

Mage::log(print_r($arr, 1), null, 'logfile.log');

Hinzufügen eines zweiten Parameters zu print_r Gibt eine Zeichenfolge mit gedruckter Variable zurück.
BEARBEITEN
Basierend auf den folgenden Kommentaren fühle ich mich verpflichtet, andere Optionen für die Protokollierung 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 ein Etikett. Wenn dies nicht der Fall ist null Es wird vor dem Array -Dump hinzugefügt.
Der dritte Parameter von Zend_Debug::dump() meint echo. Wenn es true Dann wird das Dump -Ergebnis wiederholt, wenn es so ist false Es wird als Zeichenfolge zurückgegeben. In Ihrem Fall müssen Sie es sein false.

Andere Tipps

Haben Sie versucht, nur zu tun:

Mage::log($array, null, 'logfile.log', true);

Die Magierprotokollmethode sollte das Array It selbst erweitern.

Wie Petar betonte, wird es erweitert. Wenn es sich also um ein Array oder ein Objekt handelt, ist kein Print_r erforderlich. Aber wenn Sie es mischen, wie:

Mage::log('my string' . $array);

Sie erhalten ein Problem, da PHPS -Array zur String -Konvertierung bedeutet:

array(... whatever...) -> 'String'

Und mit einem Objekt versucht PHP, die __toString -Methode aufzurufen, wenn dies nicht vorhanden ist, wird ein Fehler geworfen (glaube ich).

Und als Referenz, 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) {
    }
}

Nichts getestet :-)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit magento.stackexchange
scroll top