Java Technologies Asynchronous Logging কনফিগার করা গাইড ও নোট

261

Asynchronous Logging একটি গুরুত্বপূর্ণ কৌশল, যা লগিং কার্যক্রমকে মূল থ্রেড থেকে আলাদা করে প্রসেসিংয়ের জন্য একটি ডেডিকেটেড থ্রেড ব্যবহার করে। এটি অ্যাপ্লিকেশনের পারফরম্যান্স উন্নত করে, কারণ মূল থ্রেড লগ মেসেজ লেখার জন্য অপেক্ষা করে না। SLF4J-এর জন্য ব্যাকএন্ড ফ্রেমওয়ার্ক যেমন Logback বা Log4j2 ব্যবহার করে Asynchronous Logging কনফিগার করা যায়।


Asynchronous Logging এর সুবিধা

  1. উন্নত পারফরম্যান্স:
    লগিং অপারেশন আলাদা থ্রেডে সম্পন্ন হয়, যা অ্যাপ্লিকেশন থ্রেডকে মুক্ত রাখে।
  2. বড় অ্যাপ্লিকেশনের জন্য উপযোগী:
    বেশি সংখ্যক লগ মেসেজ প্রক্রিয়াকরণে কার্যকর।
  3. থ্রেড আইসোলেশন:
    লগিং ফেইল হলে অ্যাপ্লিকেশনের মূল কার্যক্রমে এর প্রভাব পড়ে না।

Logback দিয়ে Asynchronous Logging কনফিগার করা

Maven ডিপেনডেন্সি

Logback এবং SLF4J ব্যবহার করতে নিচের ডিপেনডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.7</version>
</dependency>
<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.4.7</version>
</dependency>

Logback কনফিগারেশন (logback.xml)

AsyncAppender ব্যবহার করে Asynchronous Logging কনফিগার করা যায়।

logback.xml উদাহরণ:

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

    <appender name="ASYNC" class="ch.qos.logback.classic.AsyncAppender">
        <appender-ref ref="CONSOLE" />
        <queueSize>5000</queueSize>
        <discardingThreshold>0</discardingThreshold>
    </appender>

    <root level="info">
        <appender-ref ref="ASYNC" />
    </root>
</configuration>

প্রধান প্যারামিটারসমূহ

  • queueSize: লগ মেসেজের জন্য ব্যবহৃত কিউয়ের সাইজ নির্ধারণ করে। ডিফল্ট 256।
  • discardingThreshold: কিউ পূর্ণ হলে কোন লেভেলের নিচের লগ মেসেজ বাদ দেওয়া হবে তা নির্ধারণ করে। 0 মানে সব মেসেজ সংরক্ষণ করবে।
  • appender-ref: কোন অ্যাপেন্ডার Asynchronous Logging-এ ব্যবহার হবে তা নির্ধারণ করে।

উদাহরণ: Asynchronous Logging ব্যবহার

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

public class AsyncLoggingExample {

    private static final Logger logger = LoggerFactory.getLogger(AsyncLoggingExample.class);

    public static void main(String[] args) {
        for (int i = 0; i < 10000; i++) {
            logger.info("Log message number: {}", i);
        }
        System.out.println("All log messages submitted.");
    }
}

আউটপুট (Console):

2024-12-21 10:00:00 [AsyncAppender-Worker-0] INFO  AsyncLoggingExample - Log message number: 1
2024-12-21 10:00:00 [AsyncAppender-Worker-0] INFO  AsyncLoggingExample - Log message number: 2
...

Log4j2 দিয়ে Asynchronous Logging কনফিগার করা

Maven ডিপেনডেন্সি

Log4j2 এবং SLF4J ব্যবহার করতে প্রয়োজনীয় ডিপেনডেন্সি যুক্ত করুন:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>2.0.7</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-slf4j-impl</artifactId>
    <version>2.20.0</version>
</dependency>
<dependency>
    <groupId>org.apache.logging.log4j</groupId>
    <artifactId>log4j-core</artifactId>
    <version>2.20.0</version>
</dependency>

Log4j2 কনফিগারেশন (log4j2.xml)

Log4j2-এ AsyncAppender বা AsyncLogger ব্যবহার করে Asynchronous Logging সেটআপ করা যায়।

log4j2.xml উদাহরণ:

<Configuration status="WARN">
    <Appenders>
        <Console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
        </Console>
    </Appenders>

    <Loggers>
        <AsyncRoot level="info">
            <AppenderRef ref="Console" />
        </AsyncRoot>
    </Loggers>
</Configuration>

Log4j2-এর জন্য প্রধান প্যারামিটারসমূহ

  • AsyncRoot: Root logger-এ Asynchronous Logging সক্রিয় করে।
  • PatternLayout: লগ ফরম্যাট নির্ধারণ করে।
  • status: কনফিগারেশন ডায়াগনস্টিক তথ্য প্রদান করে।

Asynchronous Logging এর সেরা চর্চা

  1. সঠিক Queue Size নির্ধারণ করুন:
    খুব ছোট বা বড় Queue Size এড়িয়ে চলুন। অ্যাপ্লিকেশনের ট্রাফিকের উপর ভিত্তি করে এটি নির্ধারণ করুন।
  2. Discarding Threshold ব্যবহার করুন:
    কম গুরুত্বপূর্ণ লগ মেসেজ (যেমন DEBUG বা TRACE) বাদ দিতে এই প্যারামিটার ব্যবহার করুন।
  3. Thread Pool ম্যানেজ করুন:
    কনফিগারেশনে থ্রেড পুল সঠিকভাবে সেট করুন, যাতে লগিং পারফরম্যান্স বজায় থাকে।
  4. লগিং পর্যবেক্ষণ করুন:
    লগিং পারফরম্যান্স এবং কনফিগারেশন পর্যবেক্ষণ করার জন্য মনিটরিং টুল ব্যবহার করুন।

Asynchronous Logging ব্যবহার করে অ্যাপ্লিকেশনের লগিং কার্যক্রম আরও কার্যকর ও দ্রুততর করা যায়। Logback বা Log4j2-এর মতো ফ্রেমওয়ার্ক ব্যবহার করে সহজেই এটি বাস্তবায়ন করা সম্ভব।

Content added By
Promotion

Are you sure to start over?

Loading...