Dynamic ডেটা Logging এর জন্য Placeholders ব্যবহার

Java Technologies - লগ4জে (log4j) - Log4j এ Custom Logging Messages
141

Log4j একটি জনপ্রিয় লোগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লগিং কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। Dynamic Logging কার্যক্রমে যখন আপনি লোগ মেসেজে চলমান ডেটা অথবা ভেরিয়েবল গুলি যুক্ত করতে চান, তখন Placeholders ব্যবহার করা হয়। এর মাধ্যমে লোগ মেসেজের মধ্যে চলমান ডেটা অটোমেটিকভাবে ইনসার্ট করা যায়, যা ডিবাগিং এবং মনিটরিংয়ের জন্য সহায়ক।

এই গাইডে আমরা দেখব কিভাবে Log4j ব্যবহার করে ডাইনামিক ডেটা লগ করতে Placeholders ব্যবহার করা হয়।


১. Log4j এ Placeholders কী?

Placeholders হল সেই স্থান যেখানে আপনি রানটাইমের সময়ে ডেটা বা ভেরিয়েবল ইনসার্ট করতে পারেন। এটি সাধারণত {} বা % সিম্বল দ্বারা চিহ্নিত করা হয়। Log4j লোগিং ফ্রেমওয়ার্কে, Message Format বা Pattern Layout ব্যবহার করে আপনি ডাইনামিক ডেটা বা ভেরিয়েবল অন্তর্ভুক্ত করতে পারেন।

উদাহরণ:

logger.info("User {} has logged in from IP address {}", userName, ipAddress);

এখানে, {} দুটি Placeholders হিসেবে কাজ করছে এবং লোগ মেসেজে userName এবং ipAddress ভেরিয়েবলগুলির মান ইনসার্ট করা হবে।


২. Log4j 2.x এ Placeholders ব্যবহার করা

Log4j 2.x এ, Placeholders সাধারণত লগ মেসেজের মধ্যে চলমান ডেটা বা ভেরিয়েবল গুলিকে Parameter Substitution হিসেবে ইনসার্ট করতে ব্যবহৃত হয়।

উদাহরণ: String Formatting Placeholders

import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;

public class Example {
    private static final Logger logger = LogManager.getLogger(Example.class);

    public static void main(String[] args) {
        String userName = "JohnDoe";
        String ipAddress = "192.168.0.1";

        // Logging with placeholders
        logger.info("User {} has logged in from IP address {}", userName, ipAddress);
    }
}

এখানে:

  • {} হল Placeholders, যেখানে userName এবং ipAddress ভেরিয়েবলগুলির মান রানটাইমে সন্নিবেশিত হবে।
  • Log4j 2.x এর মধ্যে info() মেথড ব্যবহৃত হয়েছে।

আউটপুট:

INFO  User JohnDoe has logged in from IP address 192.168.0.1

এটি Placeholders ব্যবহার করে ডাইনামিকভাবে লগ ইনফরমেশন ইনসার্ট করা হচ্ছে।


৩. Log4j 2.x এর Pattern Layout ব্যবহার করে Placeholders

Pattern Layout কনফিগারেশনটি Log4j 2.x এ log format কাস্টমাইজ করার জন্য ব্যবহৃত হয়, এবং এখানে % সিম্বল দিয়ে Placeholders ব্যবহার করা হয়। উদাহরণস্বরূপ, %d, %level, %logger, %msg ইত্যাদি ফরম্যাট প্যাটার্ন ব্যবহার করা হয়।

উদাহরণ: Pattern Layout এর মাধ্যমে Placeholders ব্যবহার

log4j2.xml Configuration:

<Configuration>
    <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>
        <Root level="info">
            <AppenderRef ref="Console"/>
        </Root>
    </Loggers>
</Configuration>

এখানে:

  • %d{yyyy-MM-dd HH:mm:ss}: লোগিং টাইমস্ট্যাম্প।
  • %t: থ্রেডের নাম।
  • %level: লোগ লেভেল (INFO, ERROR, WARN)।
  • %logger{36}: লগারের ক্লাস নাম।
  • %msg: মেসেজ যা লোগে প্রিন্ট হবে।

আউটপুট:

2024-12-22 14:30:45 [main] INFO  Example - User JohnDoe has logged in from IP address 192.168.0.1

এখানে, লগ মেসেজের মধ্যে Placeholders দ্বারা ডাইনামিক ডেটা এবং লগ ফরম্যাট ইনসার্ট করা হয়েছে।


৪. Placeholders এবং Exception Logging

আপনি Placeholders ব্যবহার করে লগিংয়ের সময়ে exceptions কে অ্যাড করতে পারেন। এটা সাধারণত ডিবাগিং সময় ব্যবহার করা হয়।

উদাহরণ: Exception সহ লগিং

try {
    int result = 10 / 0;
} catch (ArithmeticException e) {
    logger.error("Error occurred while dividing numbers: {}", e.getMessage(), e);
}

এখানে, {} দ্বারা exception message ইনসার্ট করা হবে এবং e দ্বারা stack trace আউটপুট হবে।

আউটপুট:

ERROR Error occurred while dividing numbers: / by zero

এখানে Placeholders ব্যবহার করে exception এবং তার stack trace লগ আউটপুট করা হয়েছে।


৫. Placeholders এর সুবিধা

  1. Code Clarity: Placeholders ব্যবহার করলে লোগ মেসেজ আরও পরিষ্কার এবং কনসাইজ হয়, কারণ ডাইনামিক ডেটা এবং ভেরিয়েবলগুলো স্বয়ংক্রিয়ভাবে যোগ করা হয়।
  2. Performance: Log4j 2.x এর মধ্যে parameterized messages ব্যবহারের ফলে ফরম্যাটিং অনেক দ্রুত হয়, যা পারফরম্যান্সে কোনো প্রভাব ফেলবে না।
  3. Safety: লগিংয়ের সময় ডেটা ভেরিয়েবলগুলি ইনসার্ট করার মাধ্যমে নিকটবর্তী ডেটা সহ সাবধানতার সাথে প্রক্রিয়া করা যায়।
  4. No String Concatenation: Placeholders ব্যবহারে স্ট্রিং কনক্যাটেনেশনের প্রয়োজন হয় না, ফলে এটি দ্রুত এবং কম ব্যয়বহুল।

সারাংশ

Log4j ব্যবহার করে Placeholders এর মাধ্যমে ডাইনামিক ডেটা লগ করা সহজ এবং কার্যকরী। Log4j 2.x এর মধ্যে %d, %level, %msg ইত্যাদি প্যাটার্ন এবং {} সিম্বল ব্যবহার করে আপনি ডাইনামিক ভেরিয়েবল এবং এক্সেপশন লগ করতে পারেন, যা ডিবাগিং এবং মনিটরিংয়ে সহায়ক। এটি পারফরম্যান্সে কোনো প্রভাব ফেলবে না এবং কোডকে পরিষ্কার এবং নিরাপদ রাখবে।


Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...