লগ ফাইলে অ্যারে সামগ্রীগুলি কীভাবে প্রিন্ট করা যায়?


18

লুপের মাধ্যমে পুনরুক্তি না করে মাইজেন্টো সিই ১.7 এ লগ ফাইলে অ্যারের সামগ্রীগুলি কীভাবে প্রিন্ট করা যায়?

উত্তর:


26
Mage::log(print_r($arr, 1), null, 'logfile.log');

মুদ্রণ_আরতে একটি দ্বিতীয় প্যারামিটার যুক্ত করা মুদ্রিত ভেরিয়েবলের সাথে একটি স্ট্রিং প্রদান করবে।
[সম্পাদনা]
নীচের মন্তব্যের ভিত্তিতে আমি একটি অ্যারে লগ করার জন্য অন্যান্য বিকল্পগুলির অফার দিতে বাধ্য বোধ করি।

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()echotruefalsefalse


ধন্যবাদ। এটি পুরোপুরি কাজ করেছে। আমি মনে করি আপনি মুদ্রণ_আর ফাংশনের পরামিতিগুলির মধ্যে কমাটি মিস করেছেন। পরিবর্তে একটি পুরো স্টপ ছিল।
সুকেশিনী

@ এস 123 হ্যাঁ ... আমি এটি দেখেছি। এটি এখনই ঠিক করা হয়েছে
মারিয়াস

6
আপনার print_rএখানে দরকার নেই, ম্যাজেন্টোর লগার অ্যারে এবং অবজেক্টগুলিকে স্বয়ংক্রিয়ভাবে ছড়িয়ে দেবে
অ্যালান স্টর্ম

আপনি যদি ব্যবহার করার জন্য জেদ করেন তবে ব্যবহারের print_rচেয়ে আরও ভাল পছন্দ হতে পারে Zend_Debug::dump($var)
পিএসপাহ্ন

@ অ্যালান ঝড়: ধন্যবাদ আমি আপনার পরামর্শ পরীক্ষা। এটি পুরোপুরি কাজ করে।
সুকেশিনী

11

আপনি কি ঠিক করার চেষ্টা করেছেন:

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

মাইজ লগ পদ্ধতিতে অ্যারেটি নিজে বাড়ানো উচিত।


অনেক ধন্যবাদ. এটা কাজ করেছে. আমি যখন যাচাই করি তখন কেন এটি আগে কাজ করে না জানিনা।
সুকেশিনী

8

পেটার যেমন উল্লেখ করেছে, এটি প্রসারিত হয়েছে, সুতরাং এটি যদি একটি অ্যারে বা অবজেক্ট হয় তবে কোনও প্রিন্ট_আর দরকার নেই। তবে আপনি যদি এটি মিশ্রিত করেন তবে:

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

আপনি একটি সমস্যা পান, কারণ পিএইচপিএস অ্যারে স্ট্রিং রূপান্তরটির অর্থ:

array(... whatever...) -> 'String'

এবং একটি বস্তুর সাথে, পিএইচপি __to স্ট্রিং পদ্ধতিটি কল করার চেষ্টা করে যদি এটি বিদ্যমান না থাকে তবে একটি ত্রুটি নিক্ষেপ করা হয় (আমার মনে হয়)।

এবং রেফারেন্সের জন্য 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) {
    }
}

কিছুই পরীক্ষা করা হয়নি :-)


আপনি সঠিক. আমি কোডটি পরীক্ষা করেছি। যদি আমরা ম্যাজ :: লগের মতো রাখি ('আমার স্ট্রিং'। অ্যারে); এটি 'আমার স্ট্রিংআরে' প্রিন্ট করবে
সুকেশিনী
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.