Как печатать содержимое массива в файле журнала?

magento.stackexchange https://magento.stackexchange.com/questions/8675

  •  16-10-2019
  •  | 
  •  

Вопрос

Как печатать содержимое массива в файл журнала в Magento CE 1.7 без итерации через петлю?

Это было полезно?

Решение

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.

Другие советы

Вы пытались сделать просто:

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

Метод журнала Mage должен расширить сам массив.

Как отметил Пеар, он расширяется, поэтому, если это массив или объект, не требуется print_r. Но если вы смешиваете это, например:

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

У вас возникает проблема, потому что массива PHPS для преобразования строки означает:

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

Ничего не протестировано :-)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с magento.stackexchange
scroll top