Servlet Logging এবং Debugging হল এমন প্রক্রিয়া যা ডেভেলপারদের সার্ভলেট অ্যাপ্লিকেশনের কার্যক্রম পর্যবেক্ষণ এবং ত্রুটি নির্ণয় করতে সাহায্য করে। Java Servlet API logging এবং debugging এর জন্য কিছু বিল্ট-ইন সুবিধা দেয়।
১. Servlet Logging
Logging হল এমন একটি প্রক্রিয়া যেখানে অ্যাপ্লিকেশনের কার্যক্রম (যেমন রিকোয়েস্ট, রেসপন্স, ত্রুটি) একটি ফাইল বা কনসোল আউটপুটে সংরক্ষণ করা হয়। Servlet এর জন্য logging প্রধানত ServletContext বা Logger API ব্যবহার করে করা যায়।
উদাহরণ: Basic Logging with ServletContext
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/logging-example")
public class LoggingServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// Logging information
getServletContext().log("GET request received at /logging-example");
// Simulating a process
try {
String param = request.getParameter("name");
if (param == null || param.isEmpty()) {
throw new IllegalArgumentException("Name parameter is missing!");
}
response.getWriter().write("Hello, " + param);
} catch (Exception e) {
// Logging an error
getServletContext().log("Error processing request: " + e.getMessage(), e);
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Invalid request");
}
}
}
এই উদাহরণে:
getServletContext().log(String message)ব্যবহার করে মেসেজ লগ করা হচ্ছে।- ত্রুটি ঘটলে
log(String message, Throwable throwable)ব্যবহার করে ত্রুটির বিস্তারিত লগ করা হয়।
উদাহরণ: Logging with java.util.logging.Logger
import java.io.IOException;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/advanced-logging")
public class AdvancedLoggingServlet extends HttpServlet {
private static final Logger LOGGER = Logger.getLogger(AdvancedLoggingServlet.class.getName());
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
LOGGER.info("Processing GET request at /advanced-logging");
try {
String param = request.getParameter("action");
if ("error".equals(param)) {
throw new RuntimeException("Simulated error");
}
response.getWriter().write("Action: " + param);
} catch (Exception e) {
LOGGER.severe("Error: " + e.getMessage());
response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "An error occurred");
}
}
}
এই উদাহরণে:
LoggerAPI ব্যবহার করে বিভিন্ন স্তরের (INFO, WARNING, SEVERE) লগ তৈরি করা হয়।
২. Servlet Debugging
Debugging হল কোডে সমস্যা চিহ্নিত এবং সমাধান করার প্রক্রিয়া। Debugging করতে Java Servlet API তে System.out.println ব্যবহার করা যেতে পারে, তবে Logger বা ডিবাগার টুল (যেমন IDE-এর বিল্ট-ইন ডিবাগার) ব্যবহার করা উত্তম।
উদাহরণ: Debugging with System.out.println
@WebServlet("/debug-example")
public class DebuggingServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
System.out.println("Debug: Received GET request");
String name = request.getParameter("name");
System.out.println("Debug: Name parameter = " + name);
if (name == null || name.isEmpty()) {
System.out.println("Debug: Name parameter is missing");
response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Name is required");
return;
}
response.getWriter().write("Hello, " + name);
}
}
ব্যবহার:
System.out.printlnমেসেজ ব্যবহার করে নির্দিষ্ট স্থানে ডিবাগ ইনফরমেশন প্রিন্ট করা হয়।
৩. Log Levels
Logger API ব্যবহার করলে লগগুলো বিভিন্ন লেভেলে বিভক্ত করা যায়:
- SEVERE: মারাত্মক ত্রুটির জন্য।
- WARNING: সতর্কতামূলক মেসেজের জন্য।
- INFO: সাধারণ তথ্য।
- CONFIG: কনফিগারেশনের তথ্য।
- FINE, FINER, FINEST: বিস্তারিত ডিবাগ তথ্য।
৪. Debugging in IDE
Servlet debugging-এর জন্য IDE (যেমন IntelliJ IDEA, Eclipse) এর মধ্যে Breakpoint সেট করুন এবং সার্ভারকে Debug মোডে চালু করুন।
ধাপ:
- সার্ভার (Tomcat, Jetty) Debug মোডে চালু করুন।
- কোডে Breakpoint যোগ করুন।
- IDE এর Debugger কনসোল থেকে রিকোয়েস্ট প্রসেস পর্যবেক্ষণ করুন।
উপসংহার
Servlet logging এবং debugging ডেভেলপারদের অ্যাপ্লিকেশনের ত্রুটি নির্ণয় এবং পারফরম্যান্স পর্যবেক্ষণে সাহায্য করে। ServletContext.log, Logger API, এবং IDE Debugger একত্রে ব্যবহার করলে উন্নতমানের ডিবাগিং এবং লগিং সিস্টেম তৈরি করা যায়।
Read more