로그 파일에 배열 내용을 인쇄하는 방법은 무엇입니까?


18

루프를 반복하지 않고 배열 내용을 magento CE 1.7의 로그 파일로 인쇄하는 방법은 무엇입니까?

답변:


26
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 함수의 매개 변수 사이에 쉼표가 빠져 있다고 생각합니다. 대신에 풀 스톱이있었습니다.
Sukeshini

@ Su123 그래 ... 나는 그것을 보았다. 이제 수정되었습니다
Marius

6
당신은 필요가 없습니다 print_r젠토의 로거가 배열과 객체 autoexpand 것, 여기에
앨런 스톰

사용을 고집하는 경우 print_r더 나은 선택 을 사용 하는 것이 좋습니다 Zend_Debug::dump($var).
pspahn

@ 앨런 스톰 : 감사합니다. 나는 당신의 제안을 테스트했습니다. 완벽하게 작동합니다.
Sukeshini

11

당신은 그냥하려고 했습니까?

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

마법사 로그 방법은 자체 배열을 확장해야합니다.


고마워 효과가있었습니다. 확인 할 때 왜 일찍 작동하지 않았는지 모르겠습니다.
Sukeshini

8

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) {
    }
}

아무것도 테스트되지 않았습니다 :-)


당신이 올바른지. 코드를 테스트했습니다. 만약 우리가 Mage :: log ( 'my string'. $ array); 이것은 'my stringArray'를 인쇄합니다
Sukeshini
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.