লগিং সেরা অনুশীলন [বন্ধ]


323

লোকেরা কীভাবে সত্যিকারের অ্যাপ্লিকেশনগুলিতে ট্রেসিং এবং লগ ইন করছে তা নিয়ে গল্প পেতে চাই। এখানে কিছু প্রশ্ন রয়েছে যা আপনার উত্তরটি ব্যাখ্যা করতে সহায়তা করে।

ফ্রেমওয়ার্ক

আপনি কোন ফ্রেমওয়ার্ক ব্যবহার করেন?

  • log4net
  • System.Diagnostics.Trace
  • System.Diagnostics.TraceSource
  • অ্যাপ্লিকেশন ব্লক লগিং
  • অন্যান্য?

আপনি যদি ট্রেসিং ব্যবহার করেন, আপনি কি ট্রেস.কোরিলেশন.স্টার্টলজিকালওপ্রেশন ব্যবহার করেন?

আপনি কি এই কোডটি ম্যানুয়ালি লিখেছেন, বা এটি করার জন্য আপনি কোনও দিক ভিত্তিক প্রোগ্রামিং ব্যবহার করেন? একটি কোড স্নিপেট শেয়ার করতে যত্নশীল?

আপনি ট্রেস উত্স উপর কোন ধরণের গ্রানুলারিটি প্রদান? উদাহরণস্বরূপ, ডাব্লুপিএফ ট্রেসসোর্সগুলি আপনাকে বিভিন্ন স্তরে এগুলি কনফিগার করতে দেয়:

  • System.Windows - সকলের জন্য WPF সেটিংস
  • System.Windows.Animation - অ্যানিমেশনের জন্য বিশেষত ওভাররাইড।

শ্রোতাদের

আপনি কোন লগ আউটপুট ব্যবহার করবেন?

  • পাঠ্য ফাইল
  • এক্সএমএল ফাইলগুলি
  • ইভেন্ট লগ
  • অন্যান্য?

যদি ফাইলগুলি ব্যবহার করে, আপনি কি রোলিং লগ বা কেবল একটি একক ফাইল ব্যবহার করেন? লোকেদের ব্যবহারের জন্য আপনি লগগুলি কীভাবে উপলব্ধ করবেন?

দেখার

লগগুলি দেখার জন্য আপনি কোন সরঞ্জামগুলি ব্যবহার করেন?

  • নোটপ্যাড
  • লেজ
  • পর্ব পরিদর্শক
  • সিস্টেমস সেন্টার অপারেশনস ম্যানেজার / মাইক্রোসফ্ট অপারেশনস ম্যানেজার
  • ডাব্লুসিএফ সার্ভিস ট্রেস ভিউয়ার
  • অন্যান্য?

আপনি যদি একটি এএসপি.এনইটি সমাধান তৈরি করে থাকেন তবে আপনি কি এএসপি.এনইটি স্বাস্থ্য পর্যবেক্ষণ ব্যবহার করেন? আপনি স্বাস্থ্য মনিটরের ইভেন্টগুলিতে ট্রেস আউটপুট অন্তর্ভুক্ত করবেন? ট্রেস.এক্সডি সম্পর্কে কী?

কাস্টম পারফরম্যান্স কাউন্টার সম্পর্কে কি?


3
লোকেরা যদি 300 টি upvotes দিয়ে এই জাতীয় প্রশ্নগুলি বন্ধ করে দেয় তবে তারা উইকি ফর্ম্যাট বা প্রোগ্রামার.স্ট্যাকেক্সচেঞ্জে পোস্ট করার পরামর্শ দিতে পারে, অথবা যদি এই ধরণের প্রশ্নটি স্বাগত না হয় তবে কোওরা। স্পষ্টতই প্রশ্নটি আসলে খুব গঠনমূলক, এটি স্ট্যাকওভারফ্লো যে মানদণ্ড চায় সেটি ফিট করে না। প্রোগ্রামার.সটাকেক্সচেঞ্জ / প্রশ্ন / 564০///২ এর 24 টি আপভোট রয়েছে। সম্ভবত স্ট্যাকওভারফ্লো কিছু হারিয়েছে?
নিলাল কানাহটন

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

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

উত্তর:


232

আপডেট করুন: System.Diagnostics এক্সটেনশন নিখোঁজ লিসেনারের আপনি চাইতে পারেন কিছু প্রদানের জন্য, CodePlex উপর Essential.Diagnostics দেখতে ( http://essentialdiagnostics.codeplex.com/ )


ফ্রেমওয়ার্ক

প্রশ্ন: আপনি কোন ফ্রেমওয়ার্ক ব্যবহার করেন?

উত্তর: সিস্টেম.ডায়াগনস্টিক্স.ট্রেসসোর্স, নেট .০.০ এ অন্তর্নির্মিত।

এটি অ্যাপ্লিকেশনগুলির জন্য শক্তিশালী, নমনীয়, উচ্চ কার্যকারিতা লগিং সরবরাহ করে, তবে অনেক বিকাশকারী এর ক্ষমতা সম্পর্কে অবগত নয় এবং সেগুলি সম্পূর্ণ ব্যবহার করে না।

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

আপনি আপনার অ্যাপ্লিকেশনটিতে লগিং স্টেটমেন্টগুলি যুক্ত করার পরিবর্তে এবং চাকাটি পুনরায় উদ্ভাবন করার পরিবর্তে আপনার প্রয়োজনীয় কয়েকটি জায়গায় সিস্টেম.ডায়াগনস্টিকস কাঠামো বাড়িয়েছেন।

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

বৈশিষ্ট্যগুলি যা আপনি জানেন না:

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

আপনি যে অঞ্চলগুলি প্রসারিত দিকে নজর দিতে চাইতে পারেন (যদি প্রয়োজন হয়):

  • ডাটাবেস শ্রোতাদের ট্রেস
  • রঙিন কনসোল ট্রেস শ্রোতা
  • এমএসএমকিউ / ইমেল / ডাব্লুএমআই শ্রোতাদের ট্রেস করুন (প্রয়োজন হলে)
  • গতিশীল কনফিগারেশন পরিবর্তনের জন্য ট্রেসকে কল করতে একটি ফাইলসিস্টেমওয়াটার প্রয়োগ করুন ef রিফ্রেশ

অন্যান্য প্রস্তাবনা:

স্ট্রাক্ট ইভেন্ট আইডি ব্যবহার করুন এবং একটি রেফারেন্স তালিকা রাখুন (উদাহরণস্বরূপ একটি এনামে তাদের নথি করুন)।

আপনার সিস্টেমে প্রতিটি (উল্লেখযোগ্য) ইভেন্টের জন্য অনন্য ইভেন্ট আইডি থাকা নির্দিষ্ট সমস্যাগুলি সংশোধন এবং অনুসন্ধানের জন্য খুব দরকারী very ইভেন্ট আইডিতে লগ / ব্যবহার করে এমন নির্দিষ্ট কোডটিতে ফিরে আসা সহজ এবং সাধারণ ত্রুটির জন্য দিকনির্দেশনা সরবরাহ করা সহজ করে তুলতে পারে, যেমন ত্রুটি 5178 এর অর্থ আপনার ডাটাবেস সংযোগের স্ট্রিংটি ভুল, ইত্যাদি etc.

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

উদাহরণস্বরূপ প্রথম অঙ্কটি সাধারণ শ্রেণীর বিবরণ দিতে পারে: 'স্টার্ট' অপারেশনের জন্য 1xxx ব্যবহার করা যেতে পারে, সাধারণ আচরণের জন্য 2XXX, ক্রিয়াকলাপের জন্য টেক্সটএক্সএক্সএক্সএক্স, ত্রুটির জন্য 5xxx, 'স্টপ' অপারেশনের জন্য 8XXx, মারাত্মক ত্রুটির জন্য 9xxx, প্রভৃতি

দ্বিতীয় অঙ্কটি ক্ষেত্রটির বিশদ বিবরণ দিতে পারে, উদাহরণস্বরূপ ডাটাবেস তথ্যের জন্য 21XX (ডাটাবেস সতর্কতার জন্য 41XX, ডাটাবেস ত্রুটির জন্য 51xx), গণনা মোডের জন্য 22XX (গণনার সতর্কতার জন্য 42XX ইত্যাদি), অন্য মডিউলের জন্য 23 xxx ইত্যাদি can

অ্যাসাইন করা, স্ট্রাকচার্ড ইভেন্ট আইডি এর সাহায্যে আপনি এগুলি ফিল্টারগুলিতে ব্যবহার করতে পারবেন।

প্রশ্ন: আপনি যদি ট্রেসিং ব্যবহার করেন, আপনি কি ট্রেস.কোড়লিকেশন.স্টার্টলজিকালওপ্রেশন ব্যবহার করেন?

উত্তর: যে কোনও ধরণের মাল্টি-থ্রেড পরিবেশে লগ স্টেটমেন্টগুলি সংশোধন করার জন্য ট্রেস.কোরিলেশন ম্যানেজার খুব দরকারী (

পারস্পরিক সম্পর্ক স্থাপনের জন্য আপনার প্রতিটি যৌক্তিক ক্রিয়াকলাপের জন্য কমপক্ষে ক্রিয়াকলাপ আইডি সেট করতে হবে।

স্টার্ট / স্টপ এবং লজিকালঅপ্রেশনস্ট্যাকটি পরে সাধারণ স্ট্যাক-ভিত্তিক প্রসঙ্গে ব্যবহার করা যেতে পারে। আরও জটিল প্রসঙ্গে (যেমন অ্যাসিনক্রোনাস অপারেশনস), নতুন ক্রিয়াকলাপে ট্র্যাক ট্রান্সফার ব্যবহার করে (এটি পরিবর্তন করার আগে) পারস্পরিক সম্পর্ক স্থাপনের অনুমতি দেয়।

পরিষেবা ট্রেস ভিউয়ার সরঞ্জাম ক্রিয়াকলাপের গ্রাফগুলি দেখার জন্য দরকারী হতে পারে (আপনি ডাব্লুসিএফ ব্যবহার না করেও)।

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

উত্তর: আপনি একটি স্কোপ ক্লাস তৈরি করতে চাইতে পারেন, যেমন লজিকালওপ্রেসনস্কোপ, যা (ক) তৈরি করার সময় প্রসঙ্গটি সেট আপ করে এবং (খ) নিষ্পত্তি হলে প্রসঙ্গটি পুনরায় সেট করে।

এটি আপনাকে ক্রিয়াকলাপ মোড়ানোর জন্য নিম্নলিখিতগুলির মতো কোড লিখতে দেয়:

  using( LogicalOperationScope operation = new LogicalOperationScope("Operation") )
  {
    // .. do work here
  }

প্রয়োজনে প্রথমে স্কোপটি অ্যাক্টিভিটিআইড সেট করতে পারে প্রয়োজনে, স্টার্টলজিকালঅপেশন কল করুন এবং তারপরে ট্রেসইভেন্টটাইপ.স্টার্ট বার্তাটি লগ করুন। ডিসপোজ এ এটি একটি স্টপ বার্তা লগ করতে পারে এবং তারপরে স্টপলজিক্যালঅপ্রেশন কল করতে পারে।

প্রশ্ন: আপনি ট্রেস উত্সের উপর কোনও ধরণের গ্রানুলারিটি সরবরাহ করেন? উদাহরণস্বরূপ, ডাব্লুপিএফ ট্রেসসোর্সগুলি আপনাকে এগুলিকে বিভিন্ন স্তরে কনফিগার করতে দেয়।

উত্তর: হ্যাঁ, সিস্টেমগুলি বড় হওয়ার সাথে সাথে একাধিক ট্রেস উত্স দরকারী / গুরুত্বপূর্ণ।

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

কেবলমাত্র একটি স্যুইচ যা এটি সমস্ত চালু বা বন্ধ করে দেয় তা না করে একবারে আপনার সিস্টেমে একটি বিভাগের জন্য এই তথ্যটি চালু করতে সক্ষম হওয়া কার্যকর।

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

আপনার প্রয়োজনীয় ট্রেস উত্সের সংখ্যা আপনার আবেদনের উপর নির্ভর করে, যেমন আপনি সমাবেশে প্রতি বা আপনার অ্যাপ্লিকেশনটির প্রতিটি প্রধান অংশের জন্য একটি ট্রেস উত্স পেতে পারেন।

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

আপনি ক্রিয়াকলাপ ট্র্যাকিং বনাম সাধারণ (অন্যান্য) লগিংয়ের জন্য পৃথক ট্রেস উত্সগুলিও বিবেচনা করতে চাইতে পারেন, কারণ ফিল্টারগুলি ঠিক কীভাবে চান তা কনফিগার করা কিছুটা সহজ করতে পারে।

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


শ্রোতাদের

প্রশ্ন: আপনি কোন লগ আউটপুট ব্যবহার করবেন?

আপনি কোন ধরণের অ্যাপ্লিকেশন লিখছেন এবং কোন জিনিস লগ করা হচ্ছে তার উপর এটি নির্ভর করে। সাধারণত বিভিন্ন জিনিস বিভিন্ন জায়গায় যায় (অর্থাত্ একাধিক আউটপুট)।

আমি আউটপুটগুলিকে সাধারণত তিনটি গ্রুপে শ্রেণিবদ্ধ করি:

(1) ইভেন্টস - উইন্ডোজ ইভেন্ট লগ (এবং ফাইলগুলি ট্রেস করুন)

উদাহরণস্বরূপ যদি কোনও সার্ভার / পরিষেবা লিখছেন, তবে উইন্ডোজে সেরা অনুশীলন হ'ল উইন্ডোজ ইভেন্ট লগটি (আপনার কাছে রিপোর্ট করার জন্য কোনও ইউআই নেই)।

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

কিছু ক্ষেত্রে আপনি ইভেন্টটিতে লিখিতভাবে আপনার অ্যাপ্লিকেশনটির অন্তর্নির্মিত অংশটি লিখতে চান এবং ট্রেস সিস্টেমের মাধ্যমে নয় (যেমন ইভেন্ট লগ এন্ট্রি সরাসরি লিখুন) may এর অর্থ এটি দুর্ঘটনাক্রমে বন্ধ করা যায় না। (দ্রষ্টব্য আপনি এখনও আপনার ট্রেস সিস্টেমে একই ইভেন্টটি নোট করতে চান যাতে আপনি সম্পর্কিত করতে পারেন)।

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

ইভেন্টগুলিতে সম্পর্কিত পারফরম্যান্স কাউন্টারও থাকতে পারে (যেমন ত্রুটির সংখ্যা / সেকেন্ড), এবং ইভেন্ট লগ, পারফরম্যান্স কাউন্টার, ট্রেস সিস্টেমে লিখতে এবং ব্যবহারকারীর কাছে প্রতিবেদন করার জন্য কোনও সরাসরি লেখার সমন্বয় করা গুরুত্বপূর্ণ হতে পারে যাতে সেগুলি ঘটতে পারে একই সময়.

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

(২) ক্রিয়াকলাপ - অ্যাপ্লিকেশন লগ ফাইল বা ডাটাবেস টেবিল (এবং ফাইলগুলি ট্রেস করুন)

এটি কোনও নিয়মিত ক্রিয়াকলাপ যা কোনও সিস্টেম করে, যেমন ওয়েব পৃষ্ঠা পরিবেশন করা, শেয়ার বাজার বাণিজ্য জমা দেওয়া, অর্ডার নেওয়া, গণনা সম্পাদন করা ইত্যাদি etc.

ক্রিয়াকলাপ ট্র্যাকিং (শুরু, থামানো ইত্যাদি) এখানে দরকারী (ডান গ্রানুয়ালিটিতে)।

এছাড়াও, নির্দিষ্ট অ্যাপ্লিকেশন লগ (কখনও কখনও অডিট লগ নামে পরিচিত) ব্যবহার করা খুব সাধারণ is সাধারণত এটি একটি ডাটাবেস টেবিল বা অ্যাপ্লিকেশন লগ ফাইল এবং এতে কাঠামোগত ডেটা থাকে (যেমন ক্ষেত্রগুলির একটি সেট) contains

আপনার প্রয়োগের উপর নির্ভর করে জিনিসগুলি এখানে কিছুটা ঝাপসা হয়ে যেতে পারে। একটি ভাল উদাহরণ হতে পারে একটি ওয়েব সার্ভার যা প্রতিটি অনুরোধ একটি ওয়েব লগতে লিখতে পারে; অনুরূপ উদাহরণগুলি মেসেজিং সিস্টেম বা গণনা সিস্টেম হতে পারে যেখানে অ্যাপ্লিকেশন-নির্দিষ্ট বিশদ সহ প্রতিটি ক্রিয়াকলাপ লগড থাকে।

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

কাস্টম অ্যাপ্লিকেশন লগের পাশাপাশি ক্রিয়াকলাপগুলিতে প্রায়শই সম্পর্কিত পর্মফর্ম কাউন্টার থাকে, যেমন প্রতি সেকেন্ডে লেনদেনের সংখ্যা।

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

(3) ডিবাগ ট্রেস - পাঠ্য ফাইল, অথবা এক্সএমএল বা ডাটাবেস।

এটি ভার্বোজ স্তরে এবং নিম্নের তথ্য (যেমন কাঁচা ডেটা ডাম্পগুলি চালু / বন্ধ করার জন্য কাস্টম বুলিয়ান সুইচগুলি)। এটি একটি সাব-অ্যাক্টিভিটি স্তরে কোনও সিস্টেম কী করছে তার সাহস বা বিশদ সরবরাহ করে।

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

এই তথ্য এবং একটি অ্যাপ্লিকেশন লগ ফাইলের মধ্যে একটি বড় পার্থক্য হ'ল এটি কাঠামোগত নয়। অ্যাপ্লিকেশন লগটিতে To, থেকে, পরিমাণ ইত্যাদি ইত্যাদির জন্য ক্ষেত্র থাকতে পারে, ভার্বোজ ডিবাগের ট্রেসগুলি প্রোগ্রামারের মধ্যে যা কিছু থাকতে পারে তা হতে পারে, যেমন "এক্স = {মান}, Y = মিথ্যা", বা এলোমেলো মন্তব্য / মার্কার " হয়ে গেল, আবার চেষ্টা করছে "।

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

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

প্রশ্ন: ফাইলগুলি ব্যবহার করে, আপনি কি রোলিং লগগুলি ব্যবহার করেন বা কেবল একটি একক ফাইল? লোকেদের ব্যবহারের জন্য আপনি লগগুলি কীভাবে উপলব্ধ করবেন?

উত্তর: ফাইলগুলির জন্য, আপনি সাধারণত পরিচালনা পদ্ধতির দৃষ্টিকোণ থেকে লগ ফাইলগুলি ঘূর্ণায়িত করতে চান (সিস্টেমের সাথে ia ডায়াগনস্টিকগুলি কেবল ভিজুয়ালবাসিক.লগিং.ফাইললগট্রেসলিস্টার ব্যবহার করে)।

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

আপনার যদি ফাইল সিস্টেমে সহজে অ্যাক্সেস না থাকে তবে একটি ডাটাবেসে ডিবাগ ট্রেসিং সহজ হতে পারে। [অর্থাত্‍ একটি ডাটাবেস ট্রেসলিস্টনার প্রয়োগ করুন]।

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

তবে, যদি এটি ক্র্যাশ হয় বা কোনও সমস্যার মুখোমুখি হয় তবে ফাইলটি মোছা হয়নি। হয় যদি এটি ত্রুটিটি ধরা দেয়, বা পরের বার এটি চালিত হয় তবে ফাইলটি লক্ষ্য করবে এবং তারপরে এটি পদক্ষেপ নিতে পারে, উদাহরণস্বরূপ এটি সংকোচিত করুন (উদাহরণস্বরূপ 7zip) এবং এটি ইমেল করুন বা অন্যথায় উপলব্ধ করুন।

আজকাল অনেকগুলি সিস্টেম কেন্দ্রীয় সার্ভারে ব্যর্থতার স্বয়ংক্রিয় প্রতিবেদন যুক্ত করে (ব্যবহারকারীদের সাথে চেক করার পরে, যেমন গোপনীয়তার কারণে)।


দেখার

প্রশ্ন: লগগুলি দেখার জন্য আপনি কোন সরঞ্জামগুলি ব্যবহার করেন?

উত্তর: আপনার যদি বিভিন্ন কারণে একাধিক লগ থাকে তবে আপনি একাধিক দর্শক ব্যবহার করবেন।

নোটপ্যাড / vi / নোটপ্যাড ++ বা অন্য কোনও পাঠ্য সম্পাদক হ'ল সরল পাঠ্য লগের জন্য প্রাথমিক।

যদি আপনার জটিল অপারেশন থাকে, যেমন স্থানান্তর সহ ক্রিয়াকলাপ, তবে আপনি অবশ্যই সার্ভিস ট্রেস ভিউয়ারের মতো বিশেষায়িত সরঞ্জামটি ব্যবহার করবেন। (তবে আপনার যদি এটির প্রয়োজন না হয় তবে কোনও পাঠ্য সম্পাদক খুব সহজ)।

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

সাধারণত উইন্ডোজ ইভেন্ট লগ এমওএম বা ওপেনভিউয়ের মতো নজরদারি সরঞ্জামগুলিতে এই উল্লেখযোগ্য ইভেন্টগুলিকে উপলব্ধ করে।

অন্যান্য --

আপনি যদি কোনও ডেটাবেসে লগইন করেন তবে এটি সহজেই ফিল্টার করে ইনফরমেশনটি বাছাই করা সহজ হতে পারে (উদাহরণস্বরূপ কোনও নির্দিষ্ট ক্রিয়াকলাপ আইডিতে জুম ইন করুন text

এমএস এক্সেল (বা অন্য কোনও স্প্রেডশিট প্রোগ্রাম)। কাঠামোগত বা আধা-কাঠামোগত তথ্য বিশ্লেষণের জন্য এটি দরকারী হতে পারে যদি আপনি এটি সঠিক ডিলিমিটর দিয়ে আমদানি করতে পারেন যাতে বিভিন্ন মান বিভিন্ন কলামে যায়।

ডিবাগ / পরীক্ষায় কোনও পরিষেবা চালানোর সময় আমি সাধারণত এটি সরলতার জন্য একটি কনসোল অ্যাপ্লিকেশনটিতে হোস্ট করি আমি একটি রঙিন কনসোল লগারকে দরকারী (যেমন ত্রুটির জন্য লাল, সতর্কতার জন্য হলুদ ইত্যাদি)। আপনার একটি কাস্টম ট্রেস শ্রোতা বাস্তবায়ন করতে হবে।

মনে রাখবেন যে ফ্রেমওয়ার্কটিতে কোনও রঙিন কনসোল লগার বা একটি ডেটাবেস লগার অন্তর্ভুক্ত নেই, এখনই আপনার প্রয়োজন হলে এটি লিখতে হবে (এটি খুব বেশি কঠিন নয়)।

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

প্রশ্ন: আপনি যদি এএসপি.এনইটি সমাধান তৈরি করে থাকেন, তবে আপনি কি এএসপি.এনইটি স্বাস্থ্য পর্যবেক্ষণ ব্যবহার করেন? আপনি স্বাস্থ্য মনিটরের ইভেন্টগুলিতে ট্রেস আউটপুট অন্তর্ভুক্ত করবেন? ট্রেস.এক্সডি সম্পর্কে কী?

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

প্রশ্ন: কাস্টম পারফরম্যান্স কাউন্টারগুলি সম্পর্কে কী?

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

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

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


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

1
সিস্টেম. ডায়াগনস্টিক্স অবকাঠামো থ্রেড-নিরাপদ; ডিফল্ট আচরণটি ফ্রেমওয়ার্কটি লক করার জন্য, তবে আপনি যদি নিজের নিজস্ব লকিং সরবরাহ করেন তবে আপনি ট্রেসলিস্টেনার.আইএসথ্রেডস্যাফাকে ওভাররাইড করতে পারেন। এমএসডিএন.মাইক্রোসফট /en-us/library/ … দেখুন । একাধিক প্রক্রিয়াগুলির জন্য আপনি সাধারণত পৃথক পৃথক ফাইলগুলিতে লিখতেন, তবে নোট করুন যে সার্ভিস ট্রেস ভিউয়ার একাধিক ট্রেস ফাইল (যেমন একাধিক মেশিন থেকে) লোড করতে পারে এবং এ্যাক্টিভিডির মাধ্যমে সেগুলি সংযুক্ত করতে পারে late
স্লি গ্রিফোন

1
আপনি কি ব্যতিক্রম লগ করতে ট্রেসইভেন্ট () ব্যবহার করবেন তা পরামর্শ দিতে পারেন?
দিমিত্রি সোসুনভ

1
System.Diagnostics.Traceএটির সাথে সজ্জিত এমন একটি বড় অঙ্কন-ব্যাক নয় [Conditional("TRACE")]যা এটি উত্পাদন পরিবেশে অকেজো করে তোলে, যেখানে আপনি TRACEপতাকাটির সাথে খুব কমই সংকলিত কোড রেখেছেন ?
Asbjørn Ulsberg

2
@ আসবজর্নু ভিজ্যুয়াল স্টুডিওতে ডিফল্ট রিলিজ বিল্ড কনফিগারেশনটিতে ট্র্যাক সংজ্ঞায়িত হয়েছে (এটি ডিইবিইউজি যা রিলিজ বিল্ডগুলির জন্য বন্ধ রয়েছে); আপনি যদি কমান্ড লাইন থেকে বিল্ডিং করেন তবে এটি চালু করা দরকার।
স্লি গ্রিফন

40

আমার ক্ষেত্রে প্ল্যাটফর্মের নমনীয়তা (ডেস্কটপ। নেট / কমপ্যাক্ট ফ্রেমওয়ার্ক, 32/64-বিট) দৃষ্টিকোণ থেকে আগত লগ 4 নেটকে সুপারিশ করে আমি সমবেত হতে চাইছি।

তবে, এটি একটি ব্যক্তিগত-লেবেল এপিআইতে মোড়ানো একটি বড় অ্যান্টি-প্যাটার্ন । ইতোমধ্যে কমন্স লগিং র‍্যাপার এপিআইlog4net.ILogger এর নেট প্রতিরূপ , সুতরাং ইতিমধ্যে আপনার জন্য কাপলিং হ্রাস করা হয়েছে, এবং এটি অ্যাপাচি গ্রন্থাগারও হ'ল এটি কোনও উদ্বেগের কারণ নয় কারণ আপনি কোনও নিয়ন্ত্রণ ছাড়ছেন না: আপনি যদি কাঁটাচামচ করেন তবে অবশ্যই.

বেশিরভাগ বাড়ির মোড়কের লাইব্রেরিগুলিতে আমি এক বা একাধিক ত্রুটিযুক্ত লিটনির প্রতিশ্রুতিবদ্ধ দেখেছি:

  1. গ্লোবাল সিঙ্গলটন লগার (বা সমানভাবে একটি স্ট্যাটিক এন্ট্রি পয়েন্ট) ব্যবহার করে যা অন্য কোনও নির্বাচনীতা লাভের জন্য প্রস্তাবিত লগার-প্রতি-শ্রেণীর প্যাটার্নের সূক্ষ্ম রেজোলিউশন হারিয়ে ফেলে ।
  2. Multipleচ্ছিক Exceptionযুক্তিটি প্রকাশ করতে ব্যর্থ , একাধিক সমস্যার মুখোমুখি:
    • এটি একটি ব্যতিক্রম লগিং নীতি বজায় রাখা আরও কঠিন করে তোলে, তাই ব্যতিক্রমগুলি ধারাবাহিকভাবে কিছুই করা হয় না।
    • এমনকি সামঞ্জস্যপূর্ণ নীতিমালা থাকা সত্ত্বেও ব্যতিক্রমটিকে কোনও স্ট্রিংয়ে ফর্ম্যাট করা অকারণে ডেটা হারায়। আমি একটি কাস্টম ILayoutডেকরেটর লিখেছি যা ঘটনার শৃঙ্খলা নির্ধারণের জন্য ব্যতিক্রমের উপরে বিশদ ড্রিল-ডাউন সম্পাদন করে।
  3. বৈশিষ্ট্যগুলি এক্সপোজ করতে ব্যর্থ হয়IsLevelEnabled , যা ক্ষেত্রগুলি বা লগিংয়ের স্তরটি বন্ধ হয়ে গেলে ফরম্যাটিং কোডটি এড়িয়ে যাওয়ার ক্ষমতা ত্যাগ করে।

1
আমাকে লগ 4 জে-এর চারপাশে একটি (ভয়ঙ্কর) ইন-হাউস র‍্যাপারকে কিছুটা কম ভয়াবহ আকারে রিফ্যাক্ট করার দায়িত্ব দেওয়া হয়েছিল (এটি এখনও বেশ খারাপ, তবে এটি লগ 4 জে আমার যে প্রয়োজনীয়তাগুলি দেওয়া হয়েছিল তা shoehorn এর ফলস্বরূপ)। আমি গ্লোবাল স্ট্যাটিক এন্ট্রি পয়েন্টটি মুছে ফেলার চেষ্টা করেছি, তবে গুলি করে ফেলে দেওয়া হয়েছিল। আমি সত্যিই পয়েন্ট পাই না। আমাদের সেটআপে, লগ 4 জে এত বেশি প্রসারিত এবং মোচড় দেওয়া হয়েছে যে এটি সত্যিই কেবল ইভেন্ট প্রেরণকারী হিসাবে ব্যবহৃত হচ্ছে; আমরা কেবল এটি ব্যবহার করছি কারণ কেউ জিজ্ঞাসা করেছিল "এর জন্য আমরা কীভাবে লগ 4 জ ব্যবহার করতে পারি?" হয় log4Ww যা কিছু সরাসরি ব্যবহার করুন, বা কেবল নিজের কাঠামো লিখুন। মাঝের রাস্তাটি বেদনাদায়ক।
অ্যাডাম জ্যাসকিউইচ

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

1
কিছুকে অ্যান্টি-প্যাটার্ন বলার অর্থ এই নয় যে এটি সর্বদা 100% একটি খারাপ ধারণা - আপনি যদি যত্নশীল না হন তবে এটি নিজেকে কোনও কোণে আঁকানোর প্রবণতা তৈরি করে। এছাড়াও, আইলগ / লগম্যানেজার নিজেই কমন্স-লগিংয়ের চিত্রটিতে একটি লিখিত র‌্যাপার মিনি-লাইব্রেরি যা লগ 4 নেট অ্যাসেমব্লিতে বান্ডিল হয়, তবে এটি উত্তোলন এবং সিএলআর-এর জন্য একটি উপযুক্ত কমন্স-লগিংয়ে রূপান্তরিত করার কোনও কারণ নেই reason
জেফ্রি হ্যান্টিন

18

আমি প্রায়শই এসপ নেট-তে বিকাশ করি না, তবে লগারের কথা যখন আসে তখন আমি ভাবি যে অনেকগুলি সেরা অনুশীলন সর্বজনীন। লগিং সম্পর্কে আমার এলোমেলো কিছু চিন্তা যা আমি বছরের পর বছর ধরে শিখেছি:

ফ্রেমওয়ার্ক

  • লগারের বিমূর্ততা কাঠামোটি ব্যবহার করুন - যেমন slf4j (বা নিজের নিজস্ব রোল), যাতে আপনি আপনার API থেকে লগার প্রয়োগটি ডিকুয়াল করেন। আমি বেশ কয়েকটি লগার ফ্রেমওয়ার্ক দেখেছি এবং চলেছি এবং আপনি কোনও ঝামেলা ছাড়াই একটি নতুন গ্রহণ করতে সক্ষম হওয়াই ভাল।
  • এমন একটি ফ্রেমওয়ার্ক সন্ধান করার চেষ্টা করুন যা বিভিন্ন আউটপুট ফর্ম্যাটগুলিকে সমর্থন করে।
  • প্লাগইন / কাস্টম ফিল্টারগুলিকে সমর্থন করে এমন একটি ফ্রেমওয়ার্ক সন্ধান করার চেষ্টা করুন।
  • বাহ্যিক ফাইলগুলি দ্বারা কনফিগার করা যায় এমন একটি কাঠামো ব্যবহার করুন, যাতে আপনার গ্রাহকরা / গ্রাহকগণ সহজেই লগ আউটপুটটিকে টুইঙ্ক করতে পারে যাতে এটিকে স্বাচ্ছন্দ্যের সাথে কমারিকাল লগ ম্যানেজমেন্ট অ্যাপ্লিকেশনগুলি দ্বারা পড়া যায়।
  • কাস্টম লগিং স্তরে ওভারবোর্ডে না যাওয়ার বিষয়ে নিশ্চিত হন, অন্যথায় আপনি বিভিন্ন লগিং ফ্রেমওয়ার্কগুলিতে যেতে সক্ষম নাও হতে পারেন।

লগার আউটপুট

  • লগিংয়ের জন্য এক্সএমএল / আরএসএস স্টাইলের লগগুলি এড়ানোর চেষ্টা করুন যা বিপর্যয়কর ব্যর্থতার মুখোমুখি হতে পারে। এটি গুরুত্বপূর্ণ কারণ যদি আপনার লগারটি ক্লোজিং </xxx>ট্যাগ না লিখে বন্ধ করে দেয় তবে আপনার লগটি নষ্ট হয়ে গেছে।
  • থ্রেড লগ করুন। অন্যথায়, আপনার প্রোগ্রামের প্রবাহটি ট্র্যাক করা খুব কঠিন হতে পারে।
  • আপনি যদি নিজের লগগুলি আন্তর্জাতিকীকরণ করতে চান তবে আপনার বিকাশকারী কেবলমাত্র ইংরাজীতে (বা আপনার পছন্দের ভাষা) লগ করতে চাইতে পারেন।
  • কখনও কখনও এসকিউএল কোয়েরিতে লগিং স্টেটমেন্ট সন্নিবেশ করার বিকল্প থাকা সত্ত্বেও ডিবাগিং পরিস্থিতিতে একটি জীবনকাল হতে পারে। যেমন:
    - চলমান শ্রেণি: com.foocorp.foopackage.FooClass: 9021
    নির্বাচন করুন * fooM থেকে;
  • আপনি ক্লাস-লেভেল লগিং চান। আপনি সাধারণত লগারের স্থির দৃষ্টান্তও চান না - এটি মাইক্রো-অপ্টিমাইজেশনের পক্ষে মূল্যবান নয়।
  • লগ করা ব্যতিক্রমগুলি চিহ্নিতকরণ এবং শ্রেণীবদ্ধকরণ কখনও কখনও দরকারী কারণ সমস্ত ব্যতিক্রম সমানভাবে তৈরি হয় না। সুতরাং গুরুত্বপূর্ণ ব্যতিক্রমগুলির একটি উপসেট জেনে রাখা সময় প্রধান একটি সহায়ক, যদি আপনার কাছে কোনও লগ মনিটর থাকে যা সমালোচনামূলক রাজ্যগুলিতে বিজ্ঞপ্তি প্রেরণের প্রয়োজন হয়।
  • সদৃশ ফিল্টারগুলি আপনার দৃষ্টিশক্তি এবং হার্ড ডিস্ক সংরক্ষণ করবে will আপনি কি একই লগিং স্টেটমেন্টটি 10 ​​^ 10000000 বার পুনরাবৃত্তি দেখতে চান? কেবল এই জাতীয় বার্তা পাওয়া ভাল কি না: This is my logging statement - Repeated 100 times

আমার এই প্রশ্নটি দেখুন ।


5
সদৃশ ফিল্টারগুলি একটি দুর্দান্ত ধারণা
পল স্টোভেল

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

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

আমি আরএসএসে একমত আমি ভিজ্যুয়ালাইজেশন সরঞ্জামগুলি সম্পর্কে আরও ভাবছি যা আপনাকে এন্ট্রি আরও ভালভাবে বুঝতে দেয়। পাঠ্য ফাইলগুলির সাহায্যে আপনি সাধারণত একটি লাইনে একটি এন্ট্রি রাখতে চান; তবে কখনও কখনও আপনি স্ট্যাক ট্রেস বা সিরিয়ালযুক্ত জিনিসগুলি অন্তর্ভুক্ত করতে চান। এটিই যেখানে একটি এক্সএমএল লগ (ডাব্লুসিএফ দ্বারা ব্যবহৃত হিসাবে) কাজে আসে
পল স্টোভেল

এসকিউএল কোয়েরিগুলির উপকরণ উল্লেখ করার জন্য +1। এটি ডেটাবেস ট্রেস এবং অ্যাপ্লিকেশন ট্রেসের পারস্পরিক সম্পর্কের জন্য খুব কার্যকর। আমি আমার ডালে এটি ম্যানুয়ালি করছি, তবে আমি ভাবছি এই কৌশলটির জন্য কী ধরণের সরঞ্জাম সমর্থন রয়েছে?
কনস্টান্টিন

17

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

আমরা JVM এর মধ্যে প্রতিটি থ্রেড দ্বারা ব্যবহৃত একটি সিঙ্গলটন লগার দিয়ে শুরু করেছি এবং পুরো প্রক্রিয়াটির জন্য লগিং স্তরটি সেট করেছি। এটির ফলে যদি আমরা সিস্টেমের খুব নির্দিষ্ট অংশটি ডিবাগ করতে পারি তবে এটির বিশাল লগের ফলস্বরূপ, এক নম্বর পাঠটি হল আপনার লগিংকে বিভাগ করা।

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

আমরা Log4J এর চারপাশে মোড়ানো অ্যাপাচি কমন্স-লগিং লাইব্রেরি ব্যবহার করছি।

আশাকরি এটা সাহায্য করবে!

* সম্পাদনা করুন

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


উত্তরের জন্য ধন্যবাদ. আপনি কোড (বা তারা হার্ড কোডেড হয়) বা কোনও ধরণের স্বয়ংক্রিয় / অন্তর্নিহিত জিনিস মাধ্যমে ম্যানুয়ালি শিশু লগার তৈরি?
পল স্টোভেল

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

9

আমরা লগ 4 নেট লগিং সরবরাহকারী হিসাবে কাজের জন্য ব্যবহার করি, লগ ইভেন্টের জন্য একটি সিঙ্গলটন মোড়ক দিয়ে (যদিও সিঙ্গলটন পর্যালোচনাধীন রয়েছে তবে তারা ভাল ধারণা কিনা তা নিয়ে প্রশ্ন করে)।

আমরা নিম্নলিখিত কারণে এটি বেছে নিয়েছি:

  • বিভিন্ন পরিবেশে সাধারণ কনফিগারেশন / পুনরায় কনফিগারেশন
  • প্রাক-বিল্ট সংযোজনকারীদের ভাল সংখ্যা
  • আমরা যে সিএমএস ব্যবহার করি তার মধ্যে একটি এটি ইতিমধ্যে তৈরি হয়েছিল
  • চারপাশের লগ স্তর এবং কনফিগারেশনের দুর্দান্ত সংখ্যা

আমার উল্লেখ করা উচিত, এটি একটি এএসপি.এনইটি বিকাশের দৃষ্টিকোণ থেকে বলছে

.NET কাঠামোর মধ্যে থাকা ট্রেস ব্যবহার করার ক্ষেত্রে আমি কিছু গুণাবলী দেখতে পাচ্ছি তবে আমি এটিতে সম্পূর্ণভাবে বিক্রি করি না, মূলত কারণ যে উপাদানগুলির সাথে আমি কাজ করি তা সত্যিই কোনও ট্রেস কল করে না। আমি যে বিষয়টি প্রায়শই ব্যবহার করি তা হ'ল System.Net.Mailআমি যা বলতে পারি তা থেকে।

সুতরাং আমাদের কাছে একটি লাইব্রেরি রয়েছে যা log4net মোড়ানো এবং আমাদের কোডের মধ্যে আমাদের কেবল এই জাতীয় জিনিস দরকার:

Logger.Instance.Warn("Something to warn about");
Logger.Instance.Fatal("Something went bad!", new Exception());

try {
  var i = int.Parse("Hello World");
} catch(FormatException, ex) {
  Logger.Instance.Error(ex);
}

পদ্ধতিগুলির মধ্যে আমরা লগিং স্তরটি সক্ষম কিনা তা দেখতে একটি পরীক্ষা করে দেখি, সুতরাং আপনার লগ 4 নেট এপিআই-এ রিডানড্যান্ট কলগুলি নেই (সুতরাং ডিবাগ সক্ষম না হলে, ডিবাগের বিবৃতি উপেক্ষা করা হবে), তবে যখন আমি কিছুটা সময় পাই এগুলি প্রকাশ করার জন্য আমি এটি আপডেট করব যাতে আপনি নিজেরাই চেকগুলি করতে পারেন। এটি মূল্যায়নগুলি যখন করা উচিত হবে না তখন তাদের প্রতিরোধ করবে, যেমন:

Logger.Instance.Debug(string.Format("Something to debug at {0}", DateTime.Now);

এটি হয়ে যাবে:

if(Logger.DebugEnabled) Logger.Instance.Debug(string.Format("Something to debug at {0}", DateTime.Now);

(এক্সিকিউশন সময়টি কিছুটা সাশ্রয় করুন)

ডিফল্টরূপে আমরা দুটি স্থানে লগ করি:

  1. ওয়েবসাইটের ফাইল সিস্টেম (একটি অ-পরিবেশিত ফাইল এক্সটেনশনে)
  2. ত্রুটি ও মারাত্মক জন্য ইমেল প্রেরণ

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

আমি দেখতে পাই নোটপ্যাড লগগুলি পড়ার জন্য ঠিক কাজ করে।


লগিং ফ্রেমওয়ার্কগুলি এমন কয়েকটি দৃষ্টান্তগুলির মধ্যে একটি যেখানে সিঙ্গলটন কোনও অপব্যবহার নয়।
এমএমসিডোল

আপনি যদি আপনার লগারের চারপাশে কোনও প্রসঙ্গ সরবরাহ করতে চান তবে এটি হতে পারে। তবে এটি একযোগে মোকাবেলা করতে সহায়তা করে
অ্যারন পাওয়েল

7
আমি অবশ্যই সিঙ্গলটন ছিঁড়ে ফেলব। আপনার অবশ্যই একটি একক দৃষ্টান্ত থাকতে পারে যা প্রায়শই পাস হয়ে যায় (সাধারণত IOC / DI ধারক ক্ষেত্রে)। আমি একটি ইন্টারসেপ্টারে লগিং সরানোর চেষ্টা করবো ....
yfeldblum

2
একক উদাহরণের ভক্তও নয়। আমি প্রতিটি শ্রেণিকে একটি অনন্য নামযুক্ত লগার দিতে পছন্দ করি তাই প্রতিটি মডিউল ভিত্তিতে লগিং আপ বা ডাউন ঘুরিয়ে দেওয়া সহজ-প্যাসি।
জেফ্রি হ্যান্টিন

8

আপনি কোন ফ্রেমওয়ার্ক ব্যবহার করেন?

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

কাস্টম লগিং সহায়ক সাহায্যে ট্রেস.কোরিলেশন ব্যবহার করে এবং ডাব্লুএফএফ-এ লগিংয়ের প্রসঙ্গে বিশেষভাবে কার্যকর। উদাহরণস্বরূপ আমাদের কাছে একটি রাষ্ট্রীয় মেশিন রয়েছে যা ক্রমবর্ধমান ওয়ার্কফ্লো প্রবাহের জন্য অনুরোধ করে। এই প্রতিটি অনুরোধ ক্রিয়াকলাপে আমরা স্টার্টটি লগ করি (স্টার্টলজিকালঅপ্রেশন ব্যবহার করে) এবং তারপরে শেষে আমরা জেরিক রিটার্ন ইভেন্ট হ্যান্ডলারের সাহায্যে লজিকাল অপারেশনটি বন্ধ করি।

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

আপনি কোন লগ আউটপুট ব্যবহার করবেন?

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

লগগুলি দেখার জন্য আপনি কোন সরঞ্জামগুলি ব্যবহার করেন?

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

লগগুলি একটি একক ডিরেক্টরিতে প্রেরণ করা হয় যা উত্স পরিষেবার ভিত্তিতে সাব-ডায়ারে বিভক্ত হয়। রুট দির এমন কোনও ওয়েবসাইটের মাধ্যমে উদ্ভাসিত হয় যা এর সমর্থক ব্যবহারকারী গোষ্ঠী দ্বারা অ্যাক্সেস নিয়ন্ত্রণ করে। এটি আমাদের জন্য অনুরোধ না রেখে উত্পাদন লগগুলিতে একবার নজর দিতে ও উত্পাদন ডেটার জন্য দীর্ঘ লাল টেপ প্রক্রিয়াগুলি অতিক্রম করার অনুমতি দেয়।


6

সরঞ্জামটির লেখক হিসাবে আমরা অবশ্যই .NET অ্যাপ্লিকেশনগুলি লগিং এবং ট্রেসিংয়ের জন্য স্মার্টআইএনস্পেক্ট ব্যবহার করি । আমরা সাধারণত লাইভ লগিংয়ের জন্য নামযুক্ত পাইপ প্রোটোকল এবং শেষ-ব্যবহারকারী লগগুলির জন্য বাইনারি লগ ফাইলগুলি (এনক্রিপ্ট করা) ব্যবহার করি। আমরা স্মার্টআইনস্পেক্ট কনসোলটিকে দর্শক এবং পর্যবেক্ষণ সরঞ্জাম হিসাবে ব্যবহার করি।

NET এর জন্য বেশ কয়েকটি লগিং ফ্রেমওয়ার্ক এবং সরঞ্জামগুলি আসলে রয়েছে। ডটনেটলগিং.কম এ বিভিন্ন সরঞ্জামের একটি ওভারভিউ এবং তুলনা রয়েছে ।


5

উত্তরে প্রচুর দুর্দান্ত সুপারিশ রয়েছে।

লগটি কে পড়ছে তা বিবেচনা করা একটি সাধারণ সেরা অনুশীলন। আমার ক্ষেত্রে এটি ক্লায়েন্ট সাইটে প্রশাসক হবে। সুতরাং আমি বার্তাগুলি লগ করি যা তাদেরকে এমন কিছু দেয় যা তারা কাজ করতে পারে। উদাহরণস্বরূপ, "অ্যাপ্লিকেশন শুরু করতে অক্ষম। এটি সাধারণত ...... এর কারণে ঘটে" "


1

আমরা আমাদের ওয়েব অ্যাপ্লিকেশনগুলিতে লগ 4 নেট ব্যবহার করি।

এক্সএমএল কনফিগারেশন ফাইল পরিবর্তন করে রান-টাইমে লগিং কাস্টমাইজ করার ক্ষমতাটি খুব কার্যকর যখন কোনও অ্যাপ্লিকেশন রান-টাইমে ত্রুটিযুক্ত হয় এবং আপনাকে আরও তথ্য দেখতে হবে।

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

সম্পাদনা:

আমরা একটি ডেটাবেস এবং ট্রেস সিস্টেমে সমস্ত ইভেন্ট লিখি। ইভেন্ট লগ আমরা ত্রুটি বা ব্যতিক্রমগুলির জন্য ব্যবহার করি। আমরা বেশিরভাগ ইভেন্টগুলিকে একটি ডেটাবেজে লগ করি যাতে আমরা কাস্টম প্রতিবেদন তৈরি করতে পারি এবং ব্যবহারকারীরা যদি অ্যাপ্লিকেশন থেকে ডানদিকে আসতে চান তবে লগটি দেখতে দিন।


আপনি কীভাবে এটি ব্যবহার করেন সে সম্পর্কে আপনি আরও বিশদ সরবরাহ করতে পারেন? আপনি একটি ফাইল বা ইভেন্ট লগ লগ ইন? এটি কি ঘূর্ণায়মান লগ ফাইল? আপনি এটিকে সুরক্ষিত করতে বা এর ব্যাক আপ নিতে কী করেন? আমি বাস্তব জীবনের ব্যবহারে আগ্রহী।
পল স্টোভেল

1

যতদূর দৃষ্টিভঙ্গিযুক্ত লগিং সম্পর্কিত, আমাকে অন্য এসও প্রশ্নে পোস্টশার্পের প্রস্তাব দেওয়া হয়েছিল -

ইউনিটি \ টি 4 \ এর সাথে ওরিয়েন্টেড লগিং

লগিং ফ্রেমওয়ার্কগুলি মূল্যায়ন করে থাকলে উত্তরে প্রদত্ত লিঙ্কটি দেখার উপযুক্ত visiting

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