আমি সুরক্ষার সাথে সমালোচনামূলক রিয়েল-টাইম সিস্টেমগুলি নিয়ে কাজ করি এবং লগিং প্রায়শই বিরল বাগগুলি ধরার একমাত্র উপায় যা প্রতি 53 তম মঙ্গলবার একবার নীল চাঁদ দেখা দেয় যখন এটি পূর্ণিমা হয়, আপনি যদি আমার প্রবাহকে ধরেন। এই জাতীয় বিষয় আপনাকে विषयটি সম্পর্কে ক্ষিপ্ত করে তোলে, তাই যদি আমি মুখের দিকে ঝকঝকে শুরু করি তবে আমি এখনই ক্ষমা চাইব। নিম্নলিখিতটি নেটিভ কোড ডিবাগ লগগুলির জন্য রচিত হয়েছিল, তবে এটির বেশিরভাগ পরিচালিত বিশ্বেও প্রযোজ্য ...
পাঠ্য লগ ফাইলগুলি ব্যবহার করুন। সুস্পষ্ট বলে মনে হচ্ছে তবে কিছু লোক বাইনারি লগ ফাইলগুলি তৈরি করার চেষ্টা করে: এটি কেবল বোবা কারণ আমি যখন মাঠে থাকি তখন আমার কোনও পাঠক সরঞ্জামের সন্ধানের প্রয়োজন হবে না। এছাড়াও যদি এটি পাঠ্য হয় এবং ডিবাগটি ভারবস হয় তবে ফিল্ড ইঞ্জিনিয়ার ফাইলটি পড়তে এবং সমস্যাটি সনাক্ত করতে পারে এবং আমার কাছে ফিরে না এসে সমস্যাটি নির্ধারণ করতে পারে। সবাই জিতল।
আমি এমন সিস্টেমগুলি ডিজাইন করেছি যা বেশ কিছুটা লগ করতে সক্ষম, তবে আমি সমস্ত কিছুই ডিফল্টরূপে চালু করি না। ডিবাগ তথ্য একটি লুকানো ডিবাগ কথোপকথনে প্রেরণ করা হয় যা এটি টাইমস্ট্যাম্প করে এবং এটি একটি তালিকাবক্সে আউটপুট করে (মুছে ফেলার আগে প্রায় 500 লাইনে সীমাবদ্ধ) এবং ডায়ালগটি আমাকে এটিকে থামাতে, স্বয়ংক্রিয়ভাবে লগ ফাইলটিতে সংরক্ষণ করতে বা এটিকে ডাইভার্ট করার অনুমতি দেয় allows একটি সংযুক্ত ডিবাগার এই পরিবর্তনটি আমাকে একাধিক অ্যাপ্লিকেশন থেকে খুব সুন্দরভাবে সিরিয়ালযুক্ত ডিবাগ আউটপুটটি দেখতে দেয় যা কখনও কখনও জীবন রক্ষাকারী হতে পারে। আমি ব্যবহার সাংখ্যিক লগিং মাত্রা (উচ্চতর আপনি স্তর সেট, আরো আপনি ক্যাপচার) ব্যবহার করার জন্য:
off
errors only
basic
detailed
everything
তবে এটি খুব জটিল নয় - আপনি কোনও বাগের দিকে যাওয়ার পথে আপনি টন ডিটারিটাসের মধ্যে দিয়ে ওয়েড না করে যা প্রয়োজন ঠিক তা লগইন করতে সক্ষম হওয়াই অনেক বেশি দক্ষ এবং এটি এক বিশেষ ধরণের লেনদেন বা অপারেশন হতে পারে may যে ত্রুটি কারণ। যদি এর জন্য আপনার সমস্ত কিছু চালু করা দরকার, আপনি কেবল নিজের কাজকে আরও শক্ত করে তুলছেন। আপনার সূক্ষ্ম দানযুক্ত কিছু দরকার।
সুতরাং এখন আমি একটি ফ্ল্যাগ সিস্টেমের ভিত্তিতে লগিংয়ে স্যুইচ করার প্রক্রিয়াধীন। লগড হয়ে যায় এমন প্রতিটি কিছুর কী ধরণের অপারেশন রয়েছে তা বিশদে একটি পতাকা রয়েছে এবং সেখানে চেকবাক্সগুলির একটি সেট রয়েছে যা আমাকে লগড হয়ে যায় তা সংজ্ঞায়িত করতে দেয়। সাধারণত সেই তালিকাটি দেখতে এই রকম হয়:
#define DEBUG_ERROR 1
#define DEBUG_BASIC 2
#define DEBUG_DETAIL 4
#define DEBUG_MSG_BASIC 8
#define DEBUG_MSG_POLL 16
#define DEBUG_MSG_STATUS 32
#define DEBUG_METRICS 64
#define DEBUG_EXCEPTION 128
#define DEBUG_STATE_CHANGE 256
#define DEBUG_DB_READ 512
#define DEBUG_DB_WRITE 1024
#define DEBUG_SQL_TEXT 2048
#define DEBUG_MSG_CONTENTS 4096
এই লগিং সিস্টেমটি রিলিজ বিল্ড সহ চালিত হয়, চালু হয় এবং ডিফল্টরূপে ফাইলটিতে সংরক্ষণ করা হয়। বাগটি হওয়ার পরে আপনার লগ করা উচিত ছিল তা জানতে খুব দেরী হয়েছে, যদি সেই বাগটি প্রতি ছয় মাসে গড়ে একবার দেখা যায় এবং আপনার এটি পুনরুত্পাদন করার কোনও উপায় না থাকে। লগিং যা কেবল ডিবাগ বিল্ডগুলির সাথে কাজ করে তা ঠিক। প্লেইন। বোবা।
সফ্টওয়্যারটি সাধারণত ERROR, বেসিক, STATE_CHANGE এবং এক্সেসপ্লেশন সহ জাহাজ চালিত হয়, তবে এটি ডিবাগ ডায়ালগের মাধ্যমে (বা একটি রেজিস্ট্রি / আইএনআই / সিএফজি সেটিং, যেখানে এই জিনিসগুলি সংরক্ষণ করা হয়) মাধ্যমে ক্ষেত্রটিতে পরিবর্তন করা যেতে পারে।
ওহ এবং একটি জিনিস - আমার ডিবাগ সিস্টেমটি প্রতিদিন একটি ফাইল উত্পন্ন করে। আপনার প্রয়োজনীয়তা পৃথক হতে পারে। তবে নিশ্চিত হয়ে নিন যে আপনার ডিবাগ কোডটি প্রতিটি ফাইলটি আপনার চলমান কোডের তারিখ, সংস্করণ এবং শুরুতে গ্রাহক আইডির জন্য চিহ্নিতকারী, সিস্টেমের অবস্থান বা যাই হোক না কেন দিয়ে শুরু হয়। আপনি ক্ষেত্র থেকে আগত লগ ফাইলগুলির একটি ম্যাস-ম্যাশ পেতে পারেন এবং সেগুলি কোথা থেকে এসেছে এবং সিস্টেমটি কী সংস্করণে চলছিল সেটির ডেটা আসলেই ডেটাতে রয়েছে তা আপনার কিছু রেকর্ডের প্রয়োজন এবং আপনি গ্রাহককে বিশ্বাস করতে পারবেন না / ফিল্ড ইঞ্জিনিয়ার তাদের কী সংস্করণ পেয়েছে তা আপনাকে জানানোর জন্য - তারা কেবল তাদের জানায় যে তারা কী সংস্করণ পেয়েছে। সবচেয়ে খারাপ, তারা ডিস্কে থাকা এক্সি সংস্করণটির প্রতিবেদন করতে পারে তবে পুরানো সংস্করণটি এখনও চলছে কারণ তারা প্রতিস্থাপনের পরে পুনরায় বুট করতে ভুলে গেছে। আপনার কোড নিজেই বলতে দিন।
শেষ অবধি, আপনি চান না যে আপনার কোডটি নিজস্ব সমস্যা তৈরি করে, তাই অনেক দিন বা সপ্তাহের পরে লগ ফাইলগুলি পরিষ্কার করার জন্য একটি টাইমার ফাংশন রাখুন (কেবল ফাইলের তৈরির সময় এবং সময়ের মধ্যে পার্থক্য পরীক্ষা করুন)। সার্ভার অ্যাপ্লিকেশনটির জন্য এটি ঠিক আছে যা কোনও সময় ক্লায়েন্ট সাইড অ্যাপে আপনি যখনই শুরু করেন তখন কোনও পুরানো ডেটা মুছে ফেলার মাধ্যমে পেতে পারেন ging আমরা সাধারণত 30 দিন বা তার পরে মুছে ফেলি, ঘন ঘন প্রকৌশলী পরিদর্শন ব্যতীত এমন কোনও সিস্টেমে আপনি এটিকে আরও দীর্ঘ রাখতে চান want স্পষ্টতই এটি আপনার লগ ফাইলগুলির আকারের উপরও নির্ভর করে।