Làm thế nào chúng ta có thể in biến mảng trong tệp nhật ký của Magento 2?


13

Tôi đang cố gắng in nội dung biến mảng thành một tệp nhật ký.

Trong Magento 1, có thể sử dụng Mage::log(print_r($arr, 1), null, 'logfile.log');

Đối với Magento 2, trong tệp lớp tôi đã viết mã sau đây:

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

Khi tôi thực thi mã sau khi xóa bộ đệm, Debug.log& system.logtệp không hiển thị nội dung mảng.

Hãy chia sẻ nếu bất cứ ai có bất kỳ ý tưởng về nó.

Câu trả lời:


16

Giả sử mảng của bạn là

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

sau đó bạn phải viết mã dưới đây để viết định dạng mảng thích hợp trong tệp nhật ký của bạn

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

Nó sẽ in trong tệp nhật ký của bạn

[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

Xem khai báo phương thức log

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

Vì vậy, bạn cần mã như

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

Tôi sẽ tự in_r ($ tùy chọn, đúng) thay vì mã hóa json. Nhưng sở thích \ o /
Barry Carlyon

4
tốt hơn nữa:$this->_logger->debug(json_encode($options));
nevvermind 9/11/2015

2

Phương pháp này hoạt động tốt cho tôi.

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

Sau đó kiểm tra system.logtập tin của bạn .


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') ));

}

Hãy thử cái này nó sẽ in mảng. Thử nghiệm !


0

Đối với mảng và đối tượng cũng chỉ cần sử dụng

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

public function logs(){

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

và kiểm tra đầu ra trong /var/log/debug.logtập tin


0

Tôi thấy tập tin lõi sử dụng 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));
    }
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.