Günlük dosyasında dizi içeriği nasıl yazdırılır?


18

Dizi içeriğini bir döngü boyunca yinelemeden magento CE 1.7'de bir günlük dosyasına nasıl yazdırılır?

Yanıtlar:


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

Print_r öğesine ikinci bir parametre eklenmesi , yazdırılmış değişkenli bir dize döndürür.
[EDIT]
aşağıdaki yorumları temel alarak bir dizi günlüğü için başka seçenekler sunmak zorunda hissediyorum.

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

veya diziye bir dize önekine ihtiyacınız varsa

Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');

İkinci parametresi Zend_Debug::dump()bir etikettir. Bu değilse nulldizi dökümünden önce eklenecektir.
Üçüncü parametre Zend_Debug::dump()vasıtasıyla echo. Eğer trueöyleyse, döküm sonucu yankılanır, eğer falsedize olarak döndürülür. Senin durumunda olman gerek false.


Teşekkürler. Mükemmel çalıştı. Ben print_r işlevi parametreleri arasındaki virgül kaçırmış düşünüyorum. Bunun yerine tam bir durak vardı.
Sukeshini

@ Su123 Evet ... Bunu gördüm. Şimdi düzeltildi
Marius

6
print_rBurada ihtiyacınız olmamalı , Magento'nun logger dizileri ve nesneleri otomatik olarak genişletecek
Alan Storm

Kullanmakta ısrar ediyorsanız print_r, daha iyi bir seçim olabilir Zend_Debug::dump($var).
pspahn

@Alan Storm: Teşekkürler. Önerinizi test ettim. Mükemmel çalışıyor.
Sukeshini

11

Sadece yapmaya çalıştınız mı:

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

Mage log yöntemi kendi dizisini genişletmelidir.


Çok teşekkürler. İşe yaradı. Kontrol ettiğimde neden daha önce işe yaramadığını bilmiyorum.
Sukeshini

8

Petar'ın işaret ettiği gibi, genişletilir, bu yüzden bir dizi veya nesne ise, print_r gerekmez. Ama karıştırırsanız, şöyle:

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

phps dizeden dizeye dönüştürme anlamına gelir, çünkü bir sorun olsun:

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

Ve bir nesne ile, php __toString yöntemini çağırmaya çalışırsa, bu yoksa, bir hata atılır (sanırım).

Ve referans için 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) {
    }
}

Hiçbir şey test edilmedi :-)


Haklısın. Kodu test ettim. Mage :: log ('dizem'. $ Dizi) gibi koyarsak; bu 'my stringArray'
yazdıracak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.