আমি আমার প্রোগ্রামে লগগুলি ব্যবহার করতে চাই। আমি java.util.logging সম্পর্কে শুনেছি , তবে কীভাবে শুরু করব তা আমি জানি না।
লগিংয়ের মাধ্যমে আমি কী করতে পারি তার কোনও উদাহরণ রয়েছে? আমি কীভাবে নিজের প্রোগ্রামে লগিং ব্যবহার করব?
আমি আমার প্রোগ্রামে লগগুলি ব্যবহার করতে চাই। আমি java.util.logging সম্পর্কে শুনেছি , তবে কীভাবে শুরু করব তা আমি জানি না।
লগিংয়ের মাধ্যমে আমি কী করতে পারি তার কোনও উদাহরণ রয়েছে? আমি কীভাবে নিজের প্রোগ্রামে লগিং ব্যবহার করব?
উত্তর:
java.util.logging
আপনাকে আপনার অ্যাপ্লিকেশনটির সাথে আরও একটি জার ফাইল টোটানো থেকে বিরত রাখে এবং এটি একটি ভাল ফর্ম্যাটারের সাথে ভালভাবে কাজ করে।
সাধারণভাবে, প্রতিটি শ্রেণীর শীর্ষে আপনার থাকা উচিত:
private static final Logger LOGGER = Logger.getLogger( ClassName.class.getName() );
তারপরে, আপনি কেবল লগার শ্রেণির বিভিন্ন সুবিধা ব্যবহার করতে পারেন ।
এক্সিকিউশন প্রবাহের শীর্ষ স্তরে ডিবাগিংয়েরLevel.FINE
জন্য যে কোনও কিছুই ব্যবহার করুন :
LOGGER.log( Level.FINE, "processing {0} entries in loop", list.size() );
ব্যবহারের Level.FINER
/ Level.FINEST
লুপ এর এবং স্থান যেখানে আপনি সবসময় যে অনেক বিস্তারিত দেখতে যখন মৌলিক প্রবাহ সমস্যা ডিবাগ প্রয়োজন হবে না পারে ভিতরে:
LOGGER.log( Level.FINER, "processing[{0}]: {1}", new Object[]{ i, list.get(i) } );
টন স্ট্রিং কনটেনটেশন আবর্জনা তৈরি করা থেকে বিরত রাখতে লগিং সুবিধাগুলির প্যারামিটারাইজড সংস্করণগুলি ব্যবহার করুন যা জিসি রাখতে হবে। Object[]
উপরের হিসাবে সস্তা, সাধারণত স্ট্যাক বরাদ্দ উপর।
ব্যতিক্রম হ্যান্ডলিং সহ, সর্বদা সম্পূর্ণ ব্যতিক্রম বিশদটি লগ করুন:
try {
...something that can throw an ignorable exception
} catch( Exception ex ) {
LOGGER.log( Level.SEVERE, ex.toString(), ex );
}
আমি সর্বদা ex.toString()
এখানে বার্তা হিসাবে পাস করি , কারণ যখন তখন আমি লগ ফাইলগুলিতে grep -n
" Exception
" " " জন্য থাকি, আমি বার্তাটিও দেখতে পাই। অন্যথায়, এটি স্ট্যাক ডাম্প দ্বারা উত্পাদিত আউটপুট পরবর্তী লাইনে হতে চলেছে, এবং আপনারও সেই লাইনটি মেলাতে আরও উন্নত RegEx থাকতে হবে, যা প্রায়শই আপনাকে দেখার প্রয়োজনের চেয়ে বেশি আউটপুট দেয়।
.fine()
লগ করার পদ্ধতিটি ব্যবহার করি, তবে আমি বার্তাগুলি প্রদর্শন করতে পারি না ...
লগিংয়ের জন্য অনেকগুলি উদাহরণ এবং বিভিন্ন ধরণের রয়েছে। কটাক্ষপাত java.util.logging প্যাকেজ।
উদাহরণ কোড:
import java.util.logging.Logger;
public class Main {
private static Logger LOGGER = Logger.getLogger("InfoLogging");
public static void main(String[] args) {
LOGGER.info("Logging an INFO-level message");
}
}
ক্লাসের নামটি হার্ড-কোডিং ছাড়াই :
import java.util.logging.Logger;
public class Main {
private static final Logger LOGGER = Logger.getLogger(
Thread.currentThread().getStackTrace()[0].getClassName() );
public static void main(String[] args) {
LOGGER.info("Logging an INFO-level message");
}
}
Main.class.getSimpleName()
? এইভাবে রিফ্যাক্টরিং সরঞ্জামটি প্রয়োজনে এটি যথাযথভাবে পরিবর্তন করতে চলেছে এবং এখনও এটি আপনার দ্বিতীয় সমাধানের মতো চতুর নয়।
এসএলএফ 4 জে অ্যাপাচি কমন্স লগিং (এসিএল) এর চেয়ে ভাল লগিংয়ের মুখোমুখি। এটিতে অন্যান্য লগিং ফ্রেমওয়ার্কের ব্রিজ রয়েছে, এসিএল, লগ 4 জ, বা জাভা ইউটিল লগিংয়ের সরাসরি কল করে এসএলএফ 4 জে যেতে পারে, যাতে আপনি যদি চান তবে একটি লগ কনফিগারেশন ফাইলের সাহায্যে সমস্ত আউটপুট একটি লগ ফাইলে ডাইরেক্ট করতে পারেন। আপনার অ্যাপ্লিকেশন কেন একাধিক লগিং ফ্রেমওয়ার্ক ব্যবহার করবে? কারণ আপনি তৃতীয় পক্ষের গ্রন্থাগারগুলি বিশেষত বয়স্কগুলি সম্ভবত ব্যবহার করেন।
এসএলএফ 4 জে বিভিন্ন লগিং বাস্তবায়ন সমর্থন করে। এটি স্ট্যান্ডার্ড-আউট, লগ 4 জে বা লগব্যাক (লগ 4 জে সুপারিশ করা) ব্যবহার করতে পারে।
আমি আপনাকে পরামর্শ দেব যে আপনি অ্যাপাচি-এর কমন্স লগিং ইউটিলিটি ব্যবহার করুন use এটি অত্যন্ত স্কেলেবল এবং বিভিন্ন লগারের জন্য পৃথক লগ ফাইলগুলি সমর্থন করে। এখানে দেখুন ।