답변:
Mage::log(print_r($arr, 1), null, 'logfile.log');
print_r에 두 번째 매개 변수를 추가하면 인쇄 변수가있는 문자열이 반환됩니다.
아래의 주석을 기반으로
[편집]
배열 로깅에 대한 다른 옵션을 제공해야한다고 생각합니다.
Mage::log($arr, null, 'logfile.log');
또는 배열에 문자열 접두사가 필요한 경우
Mage::log('prefix'.Zend_Debug::dump($arr, null, false), null, 'logfile.log');
의 두 번째 매개 변수 Zend_Debug::dump()
는 레이블입니다. 그렇지 않은 경우 null
배열 덤프 전에 추가됩니다.
세번째 매개 Zend_Debug::dump()
수단 echo
. 그렇다면 true
덤프 결과가 에코되고, 그렇다면 덤프 false
문자열로 반환됩니다. 귀하의 경우에는 필요합니다 false
.
print_r
젠토의 로거가 배열과 객체 autoexpand 것, 여기에
print_r
더 나은 선택 을 사용 하는 것이 좋습니다 Zend_Debug::dump($var)
.
당신은 그냥하려고 했습니까?
Mage::log($array, null, 'logfile.log', true);
마법사 로그 방법은 자체 배열을 확장해야합니다.
Petar가 지적했듯이 확장되었으므로 배열이나 객체이면 print_r이 필요하지 않습니다. 그러나 당신이 그것을 섞으면 :
Mage::log('my string' . $array);
PHP 배열을 문자열로 변환하기 때문에 문제가 발생합니다.
array(... whatever...) -> 'String'
그리고 객체를 사용하면 PHP는 이것이 존재하지 않으면 __toString 메소드를 호출하려고 시도하는데 오류가 발생합니다 (제 생각에).
그리고 참고로 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) {
}
}
아무것도 테스트되지 않았습니다 :-)