Apache Commons CLI লাইব্রেরি কমান্ড লাইন আর্গুমেন্টের মাধ্যমে ইনপুট গ্রহণ এবং আউটপুট প্রদান করার জন্য ব্যবহৃত হয়। অনেক সময়, আমাদের প্রোগ্রামটির আউটপুট বা ইনপুট লগিং করা প্রয়োজন হয় যাতে পরবর্তীতে সেগুলো ট্র্যাক করা যায় অথবা ডিবাগ করা যায়। এর জন্য আপনি কমান্ড লাইন ইনপুট এবং আউটপুট লগিং ব্যবহার করতে পারেন।
এখানে, আমরা দেখবো Command Line Input এবং Output Logging কিভাবে Apache Commons CLI ব্যবহার করে কার্যকরভাবে হ্যান্ডল করা যায়।
1. Command Line Input Logging
কমান্ড লাইন ইনপুট লগিংয়ের মাধ্যমে আপনি কোন আর্গুমেন্ট বা অপশন ব্যবহারকারী থেকে গ্রহণ করছেন, তা লগ করতে পারেন। লগিংয়ের জন্য আমরা Java এর java.util.logging প্যাকেজ বা log4j লাইব্রেরি ব্যবহার করতে পারি। এখানে আমরা java.util.logging ব্যবহার করব, যা Java SDK এর অংশ।
উদাহরণ: Command Line Input Logging
import org.apache.commons.cli.*;
import java.util.logging.*;
public class CommandLineExample {
// Logger সেট করা
private static final Logger logger = Logger.getLogger(CommandLineExample.class.getName());
public static void main(String[] args) {
// Option অবজেক্ট তৈরি করা
Options options = new Options();
// --name এবং --age অপশন তৈরি করা
options.addOption("n", "name", true, "Your name");
options.addOption("a", "age", true, "Your age");
// CommandLineParser ব্যবহার করা
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// কমান্ড লাইন আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// কমান্ড লাইন ইনপুট লগিং
if (cmd.hasOption("n")) {
String name = cmd.getOptionValue("n");
logger.info("Name input received: " + name);
} else {
logger.warning("Name argument is missing.");
}
if (cmd.hasOption("a")) {
String age = cmd.getOptionValue("a");
logger.info("Age input received: " + age);
} else {
logger.warning("Age argument is missing.");
}
// আউটপুট প্রিন্ট করা
System.out.println("Processed input:");
System.out.println("Name: " + cmd.getOptionValue("n", "Default Name"));
System.out.println("Age: " + cmd.getOptionValue("a", "Not Provided"));
} catch (ParseException e) {
logger.severe("Parsing failed. Reason: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- Logger Setup:
Logger.getLogger()দিয়ে একটি logger তৈরি করা হয়। এটি কনসোলে এবং লগ ফাইলেও আউটপুট দেখাতে সক্ষম। - Logging Inputs:
logger.info()ব্যবহার করে ইনপুট আর্গুমেন্টগুলিকে লগ করা হয়েছে। যদি কোনো আর্গুমেন্ট মিসিং থাকে, তবেlogger.warning()দিয়ে একটি সতর্কতা বার্তা লগ করা হয়েছে। - Default Values: আর্গুমেন্ট না থাকলে ডিফল্ট মান (যেমন
"Default Name") ব্যবহৃত হচ্ছে।
আউটপুট:
কমান্ড চালানো:
java CommandLineExample -n John -a 25কনসোল আউটপুট:
Processed input: Name: John Age: 25লগ ফাইল আউটপুট:
INFO: Name input received: John INFO: Age input received: 25
2. Command Line Output Logging
আউটপুট লগিংয়ের মাধ্যমে আপনি আপনার প্রোগ্রামের আউটপুট মনিটর করতে পারেন এবং লগ ফাইলে সংরক্ষণ করতে পারেন। এটি বিশেষ করে ত্রুটি ট্র্যাকিং বা ডিবাগিংয়ের সময় সহায়ক হতে পারে।
উদাহরণ: Command Line Output Logging
import java.util.logging.*;
public class CommandLineOutputLogging {
private static final Logger logger = Logger.getLogger(CommandLineOutputLogging.class.getName());
public static void main(String[] args) {
// Logging setup
ConsoleHandler consoleHandler = new ConsoleHandler();
logger.addHandler(consoleHandler);
logger.setLevel(Level.ALL); // Log all levels
// আউটপুট লগিং
logger.info("Program started.");
try {
String name = "John";
String age = "30";
logger.fine("Name: " + name); // finer level of logging
logger.fine("Age: " + age);
// Some processing
String message = "Processing completed successfully!";
System.out.println(message);
logger.info("Output: " + message);
} catch (Exception e) {
logger.severe("Error occurred: " + e.getMessage());
}
}
}
ব্যাখ্যা:
- Logger Configuration:
ConsoleHandlerব্যবহার করে কনসোল আউটপুট লগ করা হয়।Level.ALLদ্বারা লগিংয়ের স্তর নির্ধারণ করা হয়। - Output Logging: আউটপুট সঠিকভাবে লগ করতে
logger.info()এবংlogger.fine()ব্যবহার করা হয়েছে। - Error Handling: যদি কোনো ত্রুটি ঘটে, তা
logger.severe()দিয়ে লগ করা হয়।
আউটপুট:
কনসোল আউটপুট:
Program started. Name: John Age: 30 Processing completed successfully!লগ ফাইল আউটপুট:
INFO: Program started. FINE: Name: John FINE: Age: 30 INFO: Output: Processing completed successfully!
3. Log Level ব্যবহার করা
লগিং স্তর নির্ধারণ করতে Java Util Logging এ বিভিন্ন স্তর ব্যবহার করা হয়, যেমন SEVERE, WARNING, INFO, FINE, FINER, এবং FINEST। এখানে INFO স্তর ব্যবহৃত হয়েছে, যা সাধারণত প্রোগ্রামের গুরুত্বপূর্ণ তথ্য লগ করার জন্য ব্যবহৃত হয়। অন্যদিকে, FINE এবং FINEST স্তরগুলি ডিবাগging এবং আরও বিস্তারিত লগিংয়ের জন্য ব্যবহৃত হয়।
Example Log Levels:
- SEVERE: গুরুতর ত্রুটি
- WARNING: সতর্কতা
- INFO: সাধারণ তথ্য
- FINE: বিস্তারিত তথ্য
- FINER: আরও বিস্তারিত
- FINEST: সবচেয়ে বিস্তারিত
4. Log Output Configuration
আপনি লগ ফাইলের আউটপুট কনফিগার করতে চাইলে, লগারকে একটি ফাইল হ্যান্ডলার যোগ করতে পারেন:
FileHandler fileHandler = new FileHandler("app.log", true);
logger.addHandler(fileHandler);
এটি লগ ফাইল app.log এ আউটপুট লিখবে এবং true সেট করা হলে পুরানো লগ সংরক্ষিত থাকবে।
সারাংশ
Apache Commons CLI এর সাথে Command Line Input এবং Output Logging খুব সহজে বাস্তবায়িত করা যায়। Java এর java.util.logging প্যাকেজ ব্যবহার করে আপনি ইনপুট এবং আউটপুটের কার্যক্রম ট্র্যাক করতে পারেন, যা ডিবাগিং এবং প্রোগ্রামের পারফরম্যান্স মনিটরিংয়ের জন্য সহায়ক। কাস্টম লগ মেসেজ এবং এক্সসেপশন হ্যান্ডলিংয়ের মাধ্যমে আপনি ব্যবহারকারীকে উপযুক্ত বার্তা প্রদান করতে পারেন এবং প্রোগ্রামের কার্যক্রম যথাযথভাবে লগ করতে পারেন।
Read more