Java Technologies SLF4J এর Custom Logger তৈরি করা গাইড ও নোট

227

SLF4J (Simple Logging Facade for Java) একটি জনপ্রিয় লগিং ফেসাড যা বিভিন্ন লগিং ফ্রেমওয়ার্কের জন্য একটি সাধারণ API প্রদান করে। এটি Logback, Log4j, এবং Java Util Logging (JUL) এর মতো লাইব্রেরির সাথে কাজ করতে সক্ষম। SLF4J এর মাধ্যমে আপনি একাধিক লগিং ফ্রেমওয়ার্কের সুবিধা নিতে পারেন এবং আপনার অ্যাপ্লিকেশনে সেন্ট্রালাইজড লগিং সিস্টেম তৈরি করতে পারেন।

এছাড়া, SLF4J এর মাধ্যমে আপনি custom logger তৈরি করতে পারেন, যা আপনার নির্দিষ্ট প্রয়োজন অনুযায়ী কাস্টমাইজড লগ মেসেজ এবং আউটপুট ফরম্যাট প্রদান করবে। এই টিউটোরিয়ালে, আমরা SLF4J ব্যবহার করে একটি Custom Logger তৈরি করার প্রক্রিয়া দেখব।


SLF4J এর Custom Logger তৈরি করার পদ্ধতি

১. SLF4J Logger API ব্যবহার করা

SLF4J এর মাধ্যমে একটি custom logger তৈরি করতে হলে, প্রথমে আপনাকে Logger এবং LoggerFactory এর সাহায্যে একটি লগার ইনস্ট্যান্স তৈরি করতে হবে।

উদাহরণ: Custom Logger কনফিগারেশন

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CustomLogger {
    // Logger instance created for the CustomLogger class
    private static final Logger logger = LoggerFactory.getLogger(CustomLogger.class);

    public static void main(String[] args) {
        // Custom log message with different log levels
        logger.trace("This is a TRACE level message.");
        logger.debug("This is a DEBUG level message.");
        logger.info("This is an INFO level message.");
        logger.warn("This is a WARN level message.");
        logger.error("This is an ERROR level message.");
    }
}

এখানে:

  • LoggerFactory.getLogger(CustomLogger.class) ব্যবহার করে CustomLogger ক্লাসের জন্য একটি Logger অবজেক্ট তৈরি করা হয়েছে।
  • বিভিন্ন লগ লেভেল (TRACE, DEBUG, INFO, WARN, ERROR) ব্যবহার করে লগ মেসেজ লেখা হয়েছে।

২. Custom Logger এর কাস্টম ফরম্যাট তৈরি করা

আপনার লগের আউটপুট কাস্টমাইজ করার জন্য আপনি Logback বা অন্যান্য লগিং লাইব্রেরির কনফিগারেশন ফাইল ব্যবহার করতে পারেন। logback.xml ফাইলে লগ আউটপুট ফরম্যাট এবং অন্যান্য কনফিগারেশন সেট করা যায়।

উদাহরণ: logback.xml কনফিগারেশন

<configuration>

    <!-- Define the appender for console output -->
    <appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - [%thread] %level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Set the root logger -->
    <root level="INFO">
        <appender-ref ref="CONSOLE"/>
    </root>

    <!-- Set the logger for CustomLogger -->
    <logger name="CustomLogger" level="DEBUG">
        <appender-ref ref="CONSOLE"/>
    </logger>

</configuration>

এখানে:

  • %d{yyyy-MM-dd HH:mm:ss}: লগের তারিখ এবং সময় ফরম্যাট।
  • [%thread]: থ্রেডের নাম।
  • %level: লগের লেভেল (TRACE, DEBUG, INFO, WARN, ERROR)।
  • %logger{36}: লগের জন্য ক্লাসের নাম।
  • %msg: লগ মেসেজ।

এই কনফিগারেশনটি CustomLogger ক্লাসের জন্য DEBUG লেভেল পর্যন্ত লগ দেখাবে এবং লগ মেসেজের আউটপুট কাস্টম ফরম্যাটে দেখাবে।


৩. Custom Logger Class with Additional Features

SLF4J এর মাধ্যমে আপনি custom logging behavior যোগ করতে পারেন, যেমন লগ ফাইল, কাস্টম ফরম্যাট, বা নির্দিষ্ট থ্রেডের জন্য লগিং। আপনি এমন একটি কাস্টম ক্লাস তৈরি করতে পারেন যা SLF4J Logger ব্যবহার করে আপনার প্রজেক্টে নির্দিষ্ট লগিং কার্যক্রম পরিচালনা করবে।

উদাহরণ: Custom Logger with File Appender

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class CustomLogger {
    private static final Logger logger = LoggerFactory.getLogger(CustomLogger.class);

    public static void main(String[] args) {
        // Log messages with different levels
        logger.info("This is an info message that will go to both console and file.");
        logger.error("This is an error message that will also go to both console and file.");
    }
}

logback.xml কনফিগারেশন (with file appender):

<configuration>

    <!-- Console logging configuration -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- File logging configuration -->
    <appender name="file" class="ch.qos.logback.core.FileAppender">
        <file>logs/application.log</file>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss} - %msg%n</pattern>
        </encoder>
    </appender>

    <!-- Root logger configuration -->
    <root level="INFO">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </root>

    <!-- Logger configuration for CustomLogger -->
    <logger name="CustomLogger" level="DEBUG">
        <appender-ref ref="console"/>
        <appender-ref ref="file"/>
    </logger>

</configuration>

এখানে, logback.xml কনফিগারেশনটি লগ ফাইল application.log এ লগ রেকর্ড করবে, এবং লগ মেসেজটি কনসোলেও প্রদর্শিত হবে।


৪. Custom Logger Class with Dynamic Log Level

আপনি আপনার custom logger এর মাধ্যমে ডাইনামিক লগ লেভেল সেটও করতে পারেন, যা runtime এ পরিবর্তন করা যেতে পারে। SLF4J এবং Logback এর মাধ্যমে এটি সহজেই করা সম্ভব।

উদাহরণ: Changing Log Level Dynamically

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class DynamicLogLevelLogger {
    private static final Logger logger = LoggerFactory.getLogger(DynamicLogLevelLogger.class);

    public static void main(String[] args) {
        // Initially log level is INFO
        logger.info("This is an INFO level message.");
        logger.debug("This is a DEBUG level message.");

        // Dynamically change log level at runtime
        // Assuming programmatically adjusting log level
        System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "DEBUG");

        // Now it will log DEBUG messages as well
        logger.debug("This is a DEBUG level message after changing log level.");
    }
}

এখানে, System.setProperty() ব্যবহার করে লগ লেভেল runtime এ পরিবর্তন করা হয়েছে।


SLF4J এবং Logback এর মাধ্যমে Custom Logger তৈরি করার সুবিধা

  1. কাস্টমাইজড লগ আউটপুট: SLF4J এবং Logback ব্যবহার করে আপনি নিজের লগ আউটপুট কাস্টমাইজ করতে পারেন, যেমন লগের ফরম্যাট, টাইমস্ট্যাম্প, লগ ফাইল আউটপুট ইত্যাদি।
  2. ফাইল এবং কনসোল আউটপুট: আপনি একই সময়ে কনসোলে এবং ফাইলে লগ আউটপুট করতে পারেন। Logback এর মাধ্যমে আপনি বিভিন্ন আউটপুট স্ট্রিম কনফিগার করতে পারবেন।
  3. পারফরম্যান্স অপটিমাইজেশন: SLF4J এবং Logback অত্যন্ত পারফরম্যান্স-অপটিমাইজড। এটি আপনাকে কম সময়ে বেশি ডেটা লগ করতে সহায়তা করবে।
  4. ডাইনামিক লগিং: আপনি runtime এ লগ লেভেল পরিবর্তন করতে পারেন, যা ডেভেলপমেন্ট, টেস্টিং, এবং প্রোডাকশন পরিবেশে সুবিধা দেয়।
  5. একাধিক লগিং লাইব্রেরি সমর্থন: SLF4J বিভিন্ন লগিং লাইব্রেরির সাথে একত্রে কাজ করতে পারে, তাই আপনি যখন প্রয়োজন হবে তখন সহজেই লগিং লাইব্রেরি পরিবর্তন করতে পারেন।

সারাংশ

SLF4J এবং Logback ব্যবহার করে আপনি একটি কাস্টম লগিং সিস্টেম তৈরি করতে পারেন, যা আপনার অ্যাপ্লিকেশনের প্রয়োজনীয়তা অনুযায়ী কাস্টমাইজড হবে। SLF4J এর মাধ্যমে আপনি একটি সাধারণ লগিং API ব্যবহার করতে পারেন, যখন Logback একটি শক্তিশালী এবং কনফিগারযোগ্য লগিং ফ্রেমওয়ার্ক সরবরাহ করে। আপনার কাস্টম লগার ক্লাস তৈরি করতে SLF4J এবং Logback এর বিভিন্ন বৈশিষ্ট্য ব্যবহার করে আপনি কার্যকরী, পারফরম্যান্স-অপটিমাইজড এবং কাস্টমাইজড লগিং সিস্টেম তৈরি করতে পারবেন।


Content added By
Promotion

Are you sure to start over?

Loading...