আপনার কি লাইব্রেরি কোড থেকে লগইন করা উচিত?


38

আমি যদি জাভা লাইব্রেরিটি বিকাশ করি তবে লাইব্রেরির কোড থেকে লগ স্টেটমেন্ট ইস্যু করা কি ভাল অনুশীলন?

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


উত্তর:


33

হ্যাঁ তুমি পারবে. এসএলএফ 4 জের মতো লগিং ফ্যাসাদ ব্যবহার করা আপনার ব্যবহারকারীদের নির্দিষ্ট লগিং ফ্রেমওয়ার্কের উপর চাপ না দিয়ে নমনীয়তা দেয়।

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

এছাড়াও, যদি আপনার ব্যবহারকারীরা একটি এসএলএফ 4 জার অন্তর্ভুক্ত না করে ( ব্যবহারকারীর গাইড থেকে ):

এসএলএফ 4 জে সংস্করণ 1.6.0 অনুসারে, শ্রেণীর পথে যদি কোনও বাধ্যবাধকতা পাওয়া যায় না, তবে slf4j-api সমস্ত লগ অনুরোধগুলি অগ্রাহ্য করে কোনও অপারেশন বাস্তবায়নে ডিফল্ট হবে।

আপনি যদি লগিংয়ের পারফরম্যান্সের প্রভাব সম্পর্কে উদ্বিগ্ন হন তবে এই এসএলএফ 4 জে FAQ এন্ট্রিটি দেখুন । ধারণাটি হ'ল আপনি স্ট্রিং ইনলাইনে যুক্ত করার পরিবর্তে বিবৃতিগুলি লগ করার জন্য পরামিতি সরবরাহ করেন:

নিম্নলিখিত দুটি লাইন হুবহু একই আউটপুট দেবে। তবে, দ্বিতীয় রূপটি অক্ষম লগিংয়ের বিবৃতিতে কমপক্ষে 30 টির একটি ফ্যাক্টর দ্বারা প্রথম ফর্মকে ছাড়িয়ে যাবে।

logger.debug("The new entry is "+entry+".");
logger.debug("The new entry is {}.", entry);

এসএলএফ 4 জে কি আরও একটি লগিং মুখোমুখি?

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


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

স্প্রিং ফ্রেমওয়ার্কটি মোটামুটি সুপরিচিত জাভা গ্রন্থাগার যা এটি করে; তাদের ক্ষেত্রে তারা জেসিএলকে বেছে নিয়েছিল।
মাইক পার্টরিজ

17

হ্যাঁ , আপনার লাইব্রেরি কোড থেকে আপনার লগ করা উচিত। এটি কেবল আপনাকে বিকাশ করতে সহায়তা করে না, যারা গ্রন্থাগারটি ব্যবহার করে তারা এটি দরকারী বলে মনে করবে। মনে রাখবেন যে আপনি নিজের প্রয়োজন লগ বিবৃতিগুলি প্রদর্শন করতে আপনি সর্বদা লগিং স্তরগুলি সেট করতে পারেন - এবং তারা এটি করতে পারে।

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

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