এই সমস্যাটি আপনি প্রকৃতপক্ষে ইঞ্জিনিয়ারিংয়ের জন্য অনেক বেশি সময় ব্যয় করতে পারেন।
ক্যানোনিকাল লগিং প্রয়োগকারী ভাষাগুলির জন্য, কেবলমাত্র প্রতিটি ক্লাসে সরাসরি ক্যানোনিকাল লগার ইনস্ট্যান্ট করুন।
ক্যানোনিকাল বাস্তবায়ন ছাড়াই ভাষাগুলির জন্য, লগিংয়ের সম্মুখের কাঠামোটি অনুসন্ধান করার চেষ্টা করুন এবং এটিতে আটকে থাকুন। slf4j জাভা মধ্যে একটি ভাল পছন্দ।
ব্যক্তিগতভাবে আমি বরং একটি একক কংক্রিট লগিং প্রয়োগের সাথে লেগে থাকতাম এবং সিসলগে সমস্ত কিছু প্রেরণ করতাম। সমস্ত ভাল লগ বিশ্লেষণ সরঞ্জামগুলি একাধিক অ্যাপ সার্ভার থেকে সিসআউট লগগুলি একটি বিস্তৃত প্রতিবেদনে একত্রিত করতে সক্ষম।
যখন কোনও ফাংশন স্বাক্ষরে এক বা দুটি নির্ভরতা পরিষেবাগুলির পাশাপাশি কিছু "আসল" যুক্তি অন্তর্ভুক্ত থাকে, আমি নির্ভরতা শেষ রাখি:
int calculateFooBarSum(int foo, int bar, IntegerSummationService svc)
যেহেতু আমার সিস্টেমে কেবল পাঁচ বা তার চেয়ে কম পরিষেবা রয়েছে তাই আমি সর্বদা নিশ্চিত করি যে সমস্ত ফাংশন স্বাক্ষরগুলিতে পরিষেবাগুলি একই ক্রমে অন্তর্ভুক্ত রয়েছে। বর্ণানুক্রমিক ক্রম যে কোনও হিসাবে ভাল। (পাশাপাশি: মিটেক্স হ্যান্ডলিংয়ের জন্য এই পদ্ধতিগত পদ্ধতি বজায় রাখা আপনার অচলাবস্থার বিকাশের সম্ভাবনাও হ্রাস করবে))
আপনি যদি নিজের অ্যাপ্লিকেশন জুড়ে নিজেকে এক ডজনেরও বেশি বা আরও নির্ভরতা ইনজেকশন করতে দেখেন তবে সম্ভবত সিস্টেমটি পৃথক সাবসিস্টেমগুলিতে বিভক্ত হওয়া দরকার (আমি মাইক্রো সার্ভিসেস বলার সাহস করব?)।