আপডেট করুন: 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 এটিতে প্রথমবার লিখলে স্বয়ংক্রিয়ভাবে একটি অনুপস্থিত লগ তৈরি করবে; যদি আপনি কোনও প্রশাসক হিসাবে বিকাশ করেন তবে আপনি তাড়াতাড়ি ধরা পড়বেন এবং যখন কোনও গ্রাহক আপনার সিস্টেম ইনস্টল করেন এবং তখন এটি ব্যবহার করতে পারবেন না কারণ তারা প্রশাসক হিসাবে চলছে না।