লগার ব্যর্থতাগুলি কীভাবে পরিচালনা করব?


12

আমাদের সংস্থার বেশ কয়েকটি অ্যাপ্লিকেশনগুলিতে আমরা একটি কাস্টম লগার ব্যবহার করি। এটি মোটামুটি শক্তিশালী, যদিও আমরা ভবিষ্যতে NLog এর মতো কিছু দিয়ে এটি প্রতিস্থাপন করতে পারি। লগারের অন্যতম কাজ হ'ল অ্যাপ্লিকেশনটিতে আসা কোনও ব্যতিক্রম লগ করা।

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

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

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



5
stderrআপনার আউটপুট মাধ্যম ব্যর্থ হয়েছে বা "অসম্ভব" ঘটেছে তা লগইন করুন ।
ডোভাল

1
বিকাশকারীদের একটি ইমেল প্রেরণ করুন বা কেবল একটি ইমেল ঠিকানা দিয়ে ত্রুটি প্রদর্শন করুন এবং ব্যবহারকারীকে ত্রুটিটি অনুলিপি করে আটকান।
ক্লো

উত্তর:


17

আপনি যখন লগারের মধ্যেই ব্যতিক্রমগুলির মুখোমুখি হন, তখন লগারের নিজস্ব ব্যতিক্রমগুলি লগ করার জন্য আপনাকে ব্যবহার করা উচিত নয়। তার কারণ হ'ল:

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

  • আপনি সাময়িক লুপে আটকে থাকতে পারেন, প্রতি সেকেন্ডে কয়েক হাজার ব্যতিক্রম উত্পন্ন করে। কল্পনা করুন আপনি একটি দূরবর্তী সার্ভারে ব্যতিক্রমগুলি রিপোর্ট করছেন। সার্ভারের সাথে একটি সমস্যা অন্য একটি ব্যতিক্রম ঘটায়, যার ফলে সংযোগ ফিরে না আসা পর্যন্ত অন্যটি ঘটায়।

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

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

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


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

আমি মনে করি আপনার পরামর্শ অনুসারে আমরা ফ্যালব্যাক বাস্তবায়নের চেষ্টা করব। জন রেনোর অ্যাপ্লিকেশনটি বন্ধ করার পরামর্শ (গুরুত্বপূর্ণ লগিং পরিস্থিতিতে) এটিও আমরা অনুসরণ করতে পারি যা আমরা বিবেচনা করি নি।
জাইরজা

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

11

লগিং যদি আপনার অ্যাপ্লিকেশনটির জন্য গুরুতর হয় তবে লগিং ব্যর্থ হলে অ্যাপ্লিকেশনটি বন্ধ করা উচিত।

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

একটি ভাল কৌশল একটি স্থানীয় ফাইলে লগইন করা হয় এবং যদি এটি ব্যর্থ হয়, তবে ইভেন্ট ব্যস্তিতে সেই ব্যর্থতা লগ করা, ইমেল সতর্কতা উত্পন্ন করা, একটি ডাটাবেসে সংরক্ষণ করা ইত্যাদি the ডিস্ক স্পেস বা অন্য কিছু বিরল অবস্থার বাইরে।

নিঃশব্দে ব্যর্থ হওয়া আপনার পক্ষে আরও ভাল কারণ এটি প্রয়োগকে আরও জটিল করে তুলবে।

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


1
সমালোচনামূলক এবং অ-সমালোচনামূলক লগিংয়ের মধ্যে পার্থক্য তৈরি করার জন্য, পাশাপাশি সময়ের ব্যবধানে লগের সংখ্যার গুরুত্ব উল্লেখ করার জন্য +1। আমি হতাশ হয়েছি যে আমি এই দুটি দিক সম্পর্কে চিন্তা করি নি, আমি বছরের পর বছর ধরে ফ্যালব্যাক লগিং ব্যবহার করছি।
আর্সেনী মোরজেনকো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.