Apache Commons CLI একটি জনপ্রিয় লাইব্রেরি যা কমান্ড লাইন আর্গুমেন্ট প্রোসেসিংয়ের জন্য ব্যবহৃত হয়। তবে, অনেক সময় আমাদের কমান্ড লাইন আর্গুমেন্টের পার্সিংয়ের সাথে Logging প্রয়োজন হয়, যাতে আমরা প্রোগ্রামটির কার্যক্রম লগ করতে পারি। এর জন্য আমরা Log4j বা SLF4J এর মতো Logging Frameworks ব্যবহার করতে পারি।
এই গাইডে, আমরা আলোচনা করব কিভাবে Apache Commons CLI এর সাথে Logging Framework (Log4j, SLF4J) ইন্টিগ্রেট করা যায়।
Log4j এবং SLF4J কী?
- Log4j: এটি একটি Java-based logging framework, যা বিভিন্ন ধরনের লগিং লেভেল (INFO, ERROR, DEBUG, WARN) সাপোর্ট করে এবং বিভিন্ন আউটপুট পদ্ধতি (ফাইল, কনসোল, ডাটাবেস ইত্যাদি) প্রদান করে।
- SLF4J: এটি একটি ফ্যাসড logging abstraction API, যা আপনি বিভিন্ন logging libraries (যেমন Log4j, Logback) এর সাথে ব্যবহার করতে পারেন। SLF4J এর মাধ্যমে আপনি লগিং ফ্রেমওয়ার্ক পরিবর্তন করতে পারেন কোন ধরনের কোড চেঞ্জ ছাড়াই।
ধাপ 1: Maven দিয়ে Log4j বা SLF4J অন্তর্ভুক্ত করা
Log4j অন্তর্ভুক্ত করা
প্রথমে pom.xml ফাইলে Log4j অন্তর্ভুক্ত করতে হবে:
<dependencies>
<!-- Log4j Dependency -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version> <!-- ব্যবহারযোগ্য Log4j ভার্সন -->
</dependency>
</dependencies>
SLF4J অন্তর্ভুক্ত করা
এছাড়া, আপনি যদি SLF4J ব্যবহার করতে চান, তবে নিচের ডিপেনডেন্সি ব্যবহার করতে পারেন:
<dependencies>
<!-- SLF4J and Log4j Binding Dependency -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.30</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.30</version>
</dependency>
</dependencies>
ধাপ 2: Log4j বা SLF4J এর সাথে Apache Commons CLI ব্যবহার করা
এখন, আমরা Apache Commons CLI এবং Log4j/SLF4J এর ইন্টিগ্রেশন দেখব।
উদাহরণ 1: Log4j এর সাথে Apache Commons CLI ইন্টিগ্রেশন
import org.apache.commons.cli.*;
import org.apache.log4j.Logger;
public class Log4jIntegrationExample {
// Log4j Logger ইনিশিয়ালাইজ করা
private static final Logger logger = Logger.getLogger(Log4jIntegrationExample.class);
public static void main(String[] args) {
// Options তৈরি করা
Options options = new Options();
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true); // Required option
options.addOption(input);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন থেকে মান বের করা
String inputFile = cmd.getOptionValue("input");
// Log4j এর মাধ্যমে লগ
logger.info("Input file: " + inputFile);
} catch (ParseException e) {
logger.error("Error parsing command line arguments", e);
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("Log4jIntegrationExample", options);
}
}
}
ব্যাখ্যা:
- এখানে Log4j ব্যবহার করে লগিং করা হয়েছে। আর্গুমেন্ট পার্সিংয়ের সময় প্রাপ্ত input ফাইলের মান Log4j এর মাধ্যমে লগ করা হয়েছে।
- যদি কোনো ParseException ঘটে, তাহলে ত্রুটি লগ করা হচ্ছে।
আউটপুট:
INFO [main] Log4jIntegrationExample - Input file: input.txt
উদাহরণ 2: SLF4J এবং Log4j এর সাথে Apache Commons CLI ইন্টিগ্রেশন
SLF4J এর সাথে Log4j ব্যবহার করার জন্য আপনি SLF4J এর API দিয়ে লগিং করবেন এবং SLF4J এর log4j12 binding ব্যবহার করবেন।
import org.apache.commons.cli.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class SLF4JIntegrationExample {
// SLF4J Logger ইনিশিয়ালাইজ করা
private static final Logger logger = LoggerFactory.getLogger(SLF4JIntegrationExample.class);
public static void main(String[] args) {
// Options তৈরি করা
Options options = new Options();
Option input = new Option("i", "input", true, "Input file");
input.setRequired(true); // Required option
options.addOption(input);
CommandLineParser parser = new DefaultParser();
CommandLine cmd = null;
try {
// আর্গুমেন্ট পার্স করা
cmd = parser.parse(options, args);
// 'input' অপশন থেকে মান বের করা
String inputFile = cmd.getOptionValue("input");
// SLF4J এর মাধ্যমে লগ
logger.info("Input file: " + inputFile);
} catch (ParseException e) {
logger.error("Error parsing command line arguments", e);
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("SLF4JIntegrationExample", options);
}
}
}
ব্যাখ্যা:
- এখানে SLF4J ব্যবহার করা হয়েছে, যা Log4j এর সাথে বন্ডিং করা হয়েছে। SLF4J API ব্যবহার করে লগিং করা হয়েছে।
- logger.info() এবং logger.error() ব্যবহার করে ইনফো এবং ত্রুটি লগ করা হয়েছে।
আউটপুট:
INFO [main] SLF4JIntegrationExample - Input file: input.txt
ধাপ 3: Log4j বা SLF4J কনফিগারেশন
এখন, Log4j বা SLF4J ব্যবহারের জন্য কনফিগারেশন ফাইল প্রয়োজন। Log4j এবং SLF4J এর কনফিগারেশন ফাইল সাধারণত log4j.properties বা logback.xml ফর্ম্যাটে থাকে।
Log4j.properties Example:
log4j.rootLogger=INFO, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss} %-5p [%t] %c{1} - %m%n
এটি কনসোলে লগিং দেখাবে এবং লগের ফরম্যাট কাস্টমাইজ করবে।
logback.xml Example for SLF4J:
<configuration>
<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%d{HH:mm:ss} %-5level [%thread] %logger{36} - %msg%n</pattern>
</encoder>
</appender>
<root level="INFO">
<appender-ref ref="stdout" />
</root>
</configuration>
এটি SLF4J এর জন্য কনফিগারেশন ফাইল যা কনসোলে ইনফো এবং ত্রুটি লগ দেখাবে।
সারাংশ
Apache Commons CLI এর সাথে Log4j বা SLF4J ইন্টিগ্রেট করার মাধ্যমে আপনি আপনার কমান্ড লাইন অ্যাপ্লিকেশনে Logging কার্যকারিতা যুক্ত করতে পারেন। আপনি Log4j বা SLF4J ব্যবহার করে লগ তৈরি করতে পারেন এবং বিভিন্ন আর্গুমেন্ট বা ত্রুটির উপর ভিত্তি করে লগ তথ্য প্রদর্শন করতে পারেন। এটি আপনার অ্যাপ্লিকেশন ডিবাগিং এবং মনিটরিং সহজ করে তুলবে।
Read more