Yanıtlar:
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 null
dizi 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 false
dize olarak döndürülür. Senin durumunda olman gerek false
.
print_r
Burada ihtiyacınız olmamalı , Magento'nun logger dizileri ve nesneleri otomatik olarak genişletecek
print_r
, daha iyi bir seçim olabilir Zend_Debug::dump($var)
.
Sadece yapmaya çalıştınız mı:
Mage::log($array, null, 'logfile.log', true);
Mage log yöntemi kendi dizisini genişletmelidir.
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 :-)