เราจะพิมพ์อาเรย์ตัวแปรในล็อกไฟล์ของ Magento 2 ได้อย่างไร?


14

ฉันกำลังพยายามพิมพ์เนื้อหาตัวแปรอาเรย์ลงในไฟล์บันทึก

ใน Magento 1 มันเป็นไปได้ที่จะใช้ Mage::log(print_r($arr, 1), null, 'logfile.log');

สำหรับ Magento 2 ในไฟล์คลาสฉันได้เขียนโค้ดต่อไปนี้:

protected $_logger;

    public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }


private function getValuesAsHtmlList(\Magento\Framework\Object $object) {
        $options = $this->getOptions($object);
       //$this->_logger->addDebug($options );
        $this->_logger->log(100,null,$options);
    }

เมื่อฉันรันโค้ดหลังจากล้างแคชDebug.log& system.logไฟล์จะไม่แสดงเนื้อหาของอาร์เรย์

กรุณาแบ่งปันหากใครมีความคิดเกี่ยวกับมัน

คำตอบ:


17

สมมติว่าอาร์เรย์ของคุณคือ

$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x', 'y', 'z'));

จากนั้นคุณต้องเขียนโค้ดด้านล่างเพื่อเขียนรูปแบบอาร์เรย์ที่เหมาะสมในล็อกไฟล์ของคุณ

$this->_logger->log(100,print_r($a,true));

มันจะพิมพ์ไฟล์บันทึกของคุณ

[2015-11-09 06:58:27] main.DEBUG: Array
(
    [a] => apple
    [b] => banana
    [c] => Array
        (
            [0] => x
            [1] => y
            [2] => z
        )

)
 {"is_exception":false} []

10

ดูการประกาศวิธีการบันทึก

public function  \Psr\Log\LoggerInterface::log($level, $message, array $context = array());

ดังนั้นคุณต้องการรหัสเช่น

$this->_logger->log(100, json_encode($options));

ฉันจะ print_r ($ ตัวเลือกจริง) ตัวเองแทนที่จะเข้ารหัส json แต่ค่ากำหนด \ o /
Barry Carlyon

4
ยังดีกว่า:$this->_logger->debug(json_encode($options));
nevvermind

2

วิธีนี้ใช้ได้ดีสำหรับฉัน

$this->logger->info(print_r($myArray, true));

จากนั้นตรวจสอบsystem.logไฟล์ของคุณ


0
protected $_logger;

    public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }

public function logs(){
  $level='log';
$this->_logger->log($level,'errorlog1234', array( array('test1'=>'123', 'test2' => '456'), array('a'=>'b') ));

}

ลองนี่มันจะพิมพ์อาเรย์ ผ่านการทดสอบแล้ว!


0

สำหรับอาร์เรย์และวัตถุก็ใช้

public function __construct(\Psr\Log\LoggerInterface $logger) {
        $this->_logger = $logger;
    }

public function logs(){

$this->logger->info(print_r($orderData, true));
}

และตรวจสอบผลลัพธ์ใน/var/log/debug.logไฟล์


0

ฉันเห็นไฟล์หลักใช้ var_export:

//File: vendor/magento/module-paypal/Model/AbstractIpn.php
/**
 * Log debug data to file
 *
 * @return void
 */
protected function _debug()
{
    if ($this->_config && $this->_config->getValue('debug')) {
        $this->logger->debug(var_export($this->_debugData, true));
    }
}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.