পাইথনে, মুদ্রণের পরিবর্তে লগিং কেন ব্যবহার করবেন?


92

কোনও জটিল প্রকল্পে সাধারণ ডিবাগিংয়ের জন্য কি প্রিন্টের পরিবর্তে পাইথন লগার ব্যবহারের কোনও কারণ আছে? অন্যান্য ব্যবহারের ক্ষেত্রে কী হবে? প্রত্যেকের জন্য কোনও গ্রহণযোগ্য সেরা ব্যবহারের কেস রয়েছে (বিশেষত যখন আপনি কেবল স্টডআউট খুঁজছেন)?

আমি সবসময় শুনেছি যে এটি একটি "সেরা অনুশীলন" তবে কেন তা বুঝতে পেরেছি না।


4
বড় প্রকল্পগুলির জন্য লগিং সর্বদা একটি "সেরা অনুশীলন" কারণ আপনি এটিকে সহজেই চালু বা বন্ধ করতে পারেন এবং আরও বা কম তথ্য পেতে পারেন। মুদ্রণ এই সুবিধার দুটি অফার।
ক্রিস ইবারেল


4
আমি সেখানে মনে করি না কি জন্য একটি সেরা ব্যবহারের ক্ষেত্রে print
সিঙ্গেলাইজেশন ইলিমিনেশন

4
পাইথন লগিং ডকুমেন্টেশন বলছেন জন্য শ্রেষ্ঠ ব্যবহারের ক্ষেত্রে printএকটি কমান্ড লাইন অ্যাপ্লিকেশনে ব্যবহারকারীর জন্য সাহায্যের বার্তা প্রদর্শন করা হয়।
slushy

এই সমস্ত উত্তরগুলি পড়তে, আমি বিপরীত প্রশ্নটি জিজ্ঞাসা করতে চাই: লগিং ব্যবহার না করার কোনও কারণ আছে কি ?
information_interchange

উত্তর:


101

লগিং প্যাকেজটিতে অনেকগুলি দরকারী বৈশিষ্ট্য রয়েছে:

  • কোথায় এবং কখন (এমনকি কোন লাইন নং।) থেকে লগিং কল করা হচ্ছে তা দেখতে সহজ।
  • আপনি একই সাথে ফাইল, সকেট, বেশ কিছুতে লগ ইন করতে পারেন।
  • আপনি আপনার লগিং তীব্রতার উপর ভিত্তি করে পার্থক্য করতে পারেন।

মুদ্রণের এগুলির কোনও নেই।

এছাড়াও, যদি আপনার প্রকল্পটি বোঝানো হয় অন্য অজগর সরঞ্জাম দ্বারা আমদানি করা, আপনার প্যাকেজটির স্টাডাউটে জিনিসগুলি প্রিন্ট করা খারাপ অভ্যাস, যেহেতু প্রিন্ট বার্তাটি কোথা থেকে আসছে তা সম্ভবত ব্যবহারকারী জানেন না। লগিংয়ের মাধ্যমে, আপনার প্যাকেজের ব্যবহারকারীরা আপনার সরঞ্জাম থেকে লগিং বার্তাগুলির প্রচার করতে চান কিনা তা চয়ন করতে পারেন।


4
খুব ভাল বলেছেন. আমি মাঝে মাঝে প্রিন্ট ব্যবহার করব যখন আমি ঠিক একবার চালানোর ইচ্ছে করে থ্রোওয়ে স্ক্রিপ্টটি ডিবাগ করি, তবে যে কোনও কোড যা অন্য মানুষের চোখের দ্বারা দেখা যায় বা এটি এক দিনের বেশি স্থায়ী হয় তার অর্থ লগার হয়ে যায়।
টিমোথিউজম্যান

22

যথাযথ লগিংয়ের বৃহত্তম সুবিধাগুলির মধ্যে একটি হ'ল আপনি বার্তাগুলিকে শ্রেণিবদ্ধ করতে এবং আপনার প্রয়োজনীয়তার উপর নির্ভর করে সেগুলি চালু বা বন্ধ করতে পারেন। উদাহরণস্বরূপ, প্রকল্পের নির্দিষ্ট অংশের জন্য ডিবাগিং স্তরের বার্তাগুলি চালু করা কার্যকর হতে পারে তবে অন্যান্য অংশগুলির জন্য এটি টোন করুন, যাতে তথ্য ওভারলোডের সাহায্যে নেওয়া হবে না এবং আপনার প্রয়োজনীয় কাজের জন্য সহজেই মনোনিবেশ করতে পারেন লগিং।

এছাড়াও, লগগুলি কনফিগারযোগ্য। আপনি এগুলি সহজেই ফিল্টার করতে পারেন, তাদের ফাইলে প্রেরণ করতে পারেন, তাদের ফর্ম্যাট করতে পারেন, টাইমস্ট্যাম্পগুলি যুক্ত করতে পারেন এবং বিশ্বব্যাপী আপনার প্রয়োজন হতে পারে এমন অন্য কোনও জিনিস। মুদ্রণ বিবৃতি সহজে পরিচালিত হয় না।


4
ফাইলগুলিতে আউটপুট প্রেরণের জন্য অবশ্যই +1। পোস্ট-মর্টেমে একটি লগফিল পার্স করা ত্রুটিটি সনাক্ত করতে একটি খোলা কনসোল উইন্ডোতে এটি আবার ভাঙ্গা তৈরি করার চেয়ে অনেক ভাল। মূলত, কোনও লগার এটি ব্যর্থ হওয়ার পরিবর্তে ব্যর্থ হওয়ার পরে স্ক্রিপ্টটি ডিবাগ করার জন্য যে কোনও সময়ের জন্য আদর্শ। এটি কোনও জটিল সমস্যার ডিবাগ করতে হয় এমন কোনও সময়ের জন্যও আদর্শ যা আপনাকে প্রোগ্রাম আউটপুট বিশ্লেষণ করতে হবে। মূলত, যেকোন সময় আপনি ত্রুটিগুলি আরও জটিল করে তুলছেন যে সিনট্যাক্স ত্রুটিগুলি, একটি লগার সম্ভবত আপনার জন্য এটি সহজ করবে।
Jonathanb

11

মুদ্রণ বিবৃতিগুলি উভয় বিশ্বের সবচেয়ে খারাপের ধরণের, ডায়াগনস্টিক উপকরণের সাথে কোনও অনলাইন ডিবাগারের নেতিবাচক দিকগুলি একত্রিত করে। আপনাকে প্রোগ্রামটি পরিবর্তন করতে হবে তবে আপনি এটি থেকে বেশি, দরকারী কোড পান না।

একটি অনলাইন ডিবাগার আপনাকে চলমান প্রোগ্রামের অবস্থাটি পরীক্ষা করতে দেয়; তবে সত্যিকারের ডিবাগার সম্পর্কে দুর্দান্ত জিনিসটি হ'ল আপনাকে উত্সটি সংশোধন করতে হবে না; ডিবাগিং সেশনের আগে বা পরে নয়; আপনি কেবল প্রোগ্রামটি ডিবাগারে লোড করুন, ডিবাগারটি কোথায় দেখতে চান তা বলুন এবং আপনি প্রস্তুত হয়ে গেছেন।

অ্যাপ্লিকেশন ইনস্ট্রুমেন্টে কিছুটা উত্স হতে পারে, সোর্স কোডটি কোনওভাবে সংশোধন করতে পারে তবে ফলাফল নির্ণয়কারী আউটপুটটিতে প্রচুর পরিমাণে বিশদ থাকতে পারে এবং খুব নির্দিষ্ট ডিগ্রীতে চালু বা বন্ধ করা যেতে পারে। পাইথন লগিং মডিউলটি কেবলমাত্র বার্তাগুলি লগ হওয়া নয়, ফাইল এবং ফাংশনও এটি প্রদর্শন করতে পারে, এটি উপস্থিত থাকলে একটি ট্রেসব্যাক, বার্তাটি নির্গত হওয়ার প্রকৃত সময় ইত্যাদি ছিল। তার চেয়েও বেশি; ডায়াগনস্টিক উপকরণ কখনই অপসারণ করা প্রয়োজন ; প্রোগ্রামটি শেষ হওয়ার পরে এবং উত্পাদনটিতে এটি যুক্ত হওয়ার দিন যেমন ছিল ঠিক ততটাই বৈধ এবং কার্যকর; তবে এটির আউটপুটটি কোনও লগ ফাইলে আটকে থাকতে পারে যেখানে এটি কাউকে বিরক্ত করার সম্ভাবনা নেই, বা লগ স্তরটি জরুরী বার্তাগুলি বাদ দিয়ে অন্য সব কিছু রাখতে পারে না।

কোনও ডিবাগারটির প্রয়োজন বা ব্যবহারের অনুমান করা আপনার পরীক্ষা করার সময় আইপথন ব্যবহার করার চেয়ে কঠিন এবং পিডিবি ডিবাগারটি অন্তর্নির্মিত নিয়ন্ত্রণের জন্য ব্যবহার করা কমান্ডগুলির সাথে পরিচিত হওয়া সত্যিই খুব কঠিন নয় no

আপনি যখন নিজেকে ভাবছেন যে কোনও মুদ্রণ বিবৃতি পিডিবি ব্যবহারের চেয়ে সহজ হতে পারে (যেমন এটি প্রায়শই থাকে), আপনি দেখতে পাবেন যে কোনও লগার ব্যবহার করা আপনার প্রোগ্রামকে রাষ্ট্রের উপর কাজ করা আরও সহজভাবে টানছে যদি আপনি পরে মুদ্রণ বিবৃতি ব্যবহার করেন এবং মুছে ফেলেন ।

আমি আমার সম্পাদককে সিনট্যাক্স ত্রুটি হিসাবে মুদ্রণ বিবৃতিগুলি হাইলাইট করতে কনফিগার করেছি এবং মন্তব্যগুলিকে লগিংয়ের বিবরণী হিসাবে মন্তব্য করেছি, যেহেতু আমি তাদের কীভাবে বিবেচনা করি।


4

আপনি যদি লগিং ব্যবহার করেন তবে মোতায়েনের জন্য দায়বদ্ধ ব্যক্তি লগারটিকে কাস্টম তথ্য সহ কাস্টম অবস্থানে প্রেরণ করতে কনফিগার করতে পারেন। আপনি যদি কেবল মুদ্রণ করেন তবে তা তারা পায়।


1

লগিং অপরিহার্যভাবে অন্যান্য মেটা ডেটার (টাইমস্ট্যাম্প, লগলিভেল, লাইন নম্বর, প্রক্রিয়া ইত্যাদি) সহ মুদ্রণের আউটপুটগুলির সন্ধানযোগ্য সরল পাঠ্য ডাটাবেস তৈরি করে।

এটি খাঁটি স্বর্ণ, পাইথন স্ক্রিপ্টটি চালানোর পরে আমি লগ ফাইলের উপরে egrep চালাতে পারি। আমি আমার আগ্রহী ঠিক কী তা বেছে নিতে এবং বাকিগুলিকে উপেক্ষা করতে আমার এগ্রিপ প্যাটার্ন অনুসন্ধানটি টিউন করতে পারি। জ্ঞানীয় লোডের এই হ্রাস এবং পরীক্ষার পরে ত্রুটি করে আমার egrep প্যাটার্নটি বাছাই করার স্বাধীনতা আমার পক্ষে মূল উপকার।

tail -f mylogfile.log | egrep "key_word1|key_word2"

এখন অন্যান্য দুর্দান্ত জিনিস ফেলে দিন যা মুদ্রণটি করতে পারে না (সকেটে প্রেরণ, ডিবাগের স্তর নির্ধারণ, লোগ্রোটেট, মেটা ডেটা যোগ করা ইত্যাদি), আপনার সরল মুদ্রণ বিবৃতিতে লগিংকে অগ্রাধিকার দেওয়ার জন্য প্রতিটি কারণ রয়েছে।

আমি মুদ্রণ বিবৃতিগুলি ব্যবহার করার প্রবণতা রাখি কারণ এটি অলস এবং সহজ, লগিংয়ের জন্য কিছু বয়লার প্লেট কোড প্রয়োজন, আরে আমাদের কাছে ইয়াসনিপেটস (ইমাস্যাকস) এবং আল্টিসনিপস (ভিআইএম) এবং অন্যান্য টেম্প্লেটিং সরঞ্জাম রয়েছে, তাই কেন সরল মুদ্রণ বিবৃতিতে লগিং ছেড়ে দিন !?

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.