हम 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));

मैं json एन्कोडिंग के बजाय खुद Print_r ($ विकल्प, सत्य) चाहूँगा। लेकिन प्राथमिकताएं \
_

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));
    }
}
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.