Log4j একটি জনপ্রিয় এবং শক্তিশালী লগিং ফ্রেমওয়ার্ক যা Java অ্যাপ্লিকেশনের জন্য লগিং কার্যক্রম পরিচালনা করে। এটি ডেভেলপারদের বিভিন্ন লেভেলে লগ মেসেজ জেনারেট করার সুযোগ দেয় এবং custom logging messages তৈরি করার জন্যও অনেক সুযোগ দেয়। আপনি Log4j এর মাধ্যমে লগ মেসেজে কাস্টম ডেটা, ফরম্যাট এবং লোগিং কনফিগারেশন যুক্ত করতে পারেন, যা আপনাকে আপনার অ্যাপ্লিকেশন মনিটরিং এবং ডিবাগিং প্রক্রিয়াকে আরও কার্যকরী করে তোলে।
এই গাইডে, আমরা Log4j এর মাধ্যমে কাস্টম লগ মেসেজ তৈরি এবং কাস্টম ফরম্যাটিং এর কিভাবে কাজ করে তা নিয়ে আলোচনা করব।
Log4j ব্যবহার করে কাস্টম লগ মেসেজ তৈরি করার জন্য, আপনাকে লগgers এবং appender কনফিগারেশন করতে হবে, এবং লগ মেসেজগুলোর জন্য কাস্টম প্যাটার্ন ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেয়া হলো যেখানে কাস্টম লগ মেসেজ তৈরি করা হয়েছে।
Log4j এর কনফিগারেশন log4j.properties ফাইলে করা হয়। এখানে আপনি কাস্টম প্যাটার্ন এবং appender কনফিগার করতে পারেন।
log4j.properties:
# Set the root logger level to DEBUG and attach the appender
log4j.rootLogger=DEBUG, console
# Define the console appender
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
# Define a custom pattern for log messages
log4j.logger.com.example=DEBUG, console
এখানে:
ConversionPattern
: এটি লগ মেসেজের কাস্টম ফরম্যাট নির্ধারণ করে। %d{yyyy-MM-dd HH:mm:ss}
লগ মেসেজের সময়স্ট্যাম্প, %p
লগ লেভেল, %c{1}
ক্লাসের নাম এবং %m
লগ মেসেজের বিষয়বস্তু এবং %n
লাইন ব্রেক হিসেবে কাজ করবে।কাস্টম লগ মেসেজ ব্যবহার করার জন্য, আপনাকে Logger অবজেক্ট ব্যবহার করতে হবে। নিচে একটি উদাহরণ দেয়া হলো যেখানে কাস্টম লগ মেসেজ তৈরি করা হয়েছে।
MyApp.java:
import org.apache.log4j.Logger;
public class MyApp {
private static final Logger logger = Logger.getLogger(MyApp.class);
public static void main(String[] args) {
// Custom log messages
logger.debug("This is a DEBUG message with some custom info.");
logger.info("This is an INFO message about the process.");
logger.warn("This is a WARNING message indicating potential issues.");
logger.error("This is an ERROR message when something goes wrong.");
logger.fatal("This is a FATAL message, indicating a serious problem.");
}
}
এখানে, logger.debug()
, logger.info()
, logger.warn()
, logger.error()
, এবং logger.fatal()
ব্যবহার করা হয়েছে বিভিন্ন লেভেলে লগ মেসেজ তৈরি করতে।
আপনি Log4j এর মাধ্যমে কাস্টম প্যাটার্ন ব্যবহার করে লগ মেসেজের আউটপুট ফরম্যাট কাস্টমাইজ করতে পারেন। নিম্নলিখিত প্যাটার্নটি ব্যবহার করা হয় বিভিন্ন তথ্য সংযুক্ত করার জন্য:
PatternLayout ব্যবহার করে কাস্টম লগ মেসেজের আউটপুট ফরম্যাট তৈরি করা হয়। নিম্নলিখিত প্যাটার্নটি কাস্টমাইজ করা যেতে পারে:
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{1}:%L - %m%n
এখানে:
%d{ISO8601}
: সময় স্টাম্প ISO 8601 ফরম্যাটে।%t
: থ্রেড নাম।%-5p
: লগ লেভেল (DEBUG, INFO, WARN, ERROR, FATAL)।%c{1}
: ক্লাস নামের প্রথম অংশ।:%L
: কোড লাইনের নম্বর।%m
: লগ মেসেজ।%n
: নতুন লাইন (newline)।এটি লগ আউটপুটকে আরও বিস্তারিত এবং কাস্টমাইজযোগ্য করে তোলে।
আপনি Map বা Thread-local তথ্য লগ মেসেজে যুক্ত করতে পারেন।
log4j.appender.console.layout.ConversionPattern=%d{ISO8601} [%t] %-5p %c{1} - %X{userId} - %m%n
এখানে %X{userId}
ব্যবহার করে userId
কাস্টম থ্রেড-লোকাল ভ্যালু যুক্ত করা হয়েছে।
কাস্টম লগিং শুধুমাত্র কনসোলেই সীমাবদ্ধ না, আপনি লগ মেসেজগুলো একটি ফাইলে লিখতেও পারেন। নিচে একটি উদাহরণ দেয়া হলো যেখানে FileAppender ব্যবহার করে লগ ফাইলের মধ্যে কাস্টম লগ মেসেজ সংরক্ষণ করা হচ্ছে।
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=logs/myapp.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1} - %m%n
এখানে:
File=logs/myapp.log
: লগ ফাইলের অবস্থান নির্ধারণ করে, যেখানে লগ মেসেজ সংরক্ষিত হবে।ConversionPattern
: ফরম্যাট কাস্টমাইজ করা হয়েছে, যেখানে লগ মেসেজের সময়, লেভেল, ক্লাস নাম এবং মেসেজ থাকবে।logger.info("This log message will be written to the console and file.");
এটি কনসোল এবং myapp.log ফাইলে লগ মেসেজ লেখে।
আপনি যদি কাস্টম লগার তৈরি করতে চান তবে তা সহজেই করা যায়:
Logger customLogger = Logger.getLogger("MyCustomLogger");
customLogger.debug("This is a custom logger debug message.");
এখানে, MyCustomLogger
নামে একটি কাস্টম logger তৈরি করা হয়েছে এবং এটি কাস্টম লগ মেসেজ আউটপুট করতে ব্যবহৃত হচ্ছে।
Log4j এর মাধ্যমে custom logging messages তৈরি করা সহজ এবং কার্যকরী। আপনি PatternLayout এবং FileAppender ব্যবহার করে লগ মেসেজের আউটপুট ফরম্যাট কাস্টমাইজ করতে পারেন এবং লগ মেসেজগুলিকে কনসোল ও ফাইলে আউটপুট করতে পারেন। কাস্টম তথ্য যেমন userId, thread info ইত্যাদি লগ মেসেজে যুক্ত করার সুযোগও রয়েছে। Log4j এ কাস্টম লগিং ব্যবহারে আপনি আপনার অ্যাপ্লিকেশন বা সিস্টেমের কার্যকারিতা ট্র্যাক করতে আরও সক্ষম হবেন।
Log4j একটি জনপ্রিয় এবং শক্তিশালী লগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লগিং কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি আপনাকে লগ বার্তা কাস্টমাইজ করতে, বিভিন্ন লেভেলে (INFO, DEBUG, ERROR ইত্যাদি) লগিং করতে এবং বিভিন্ন আউটপুট উৎস (যেমন কনসোল, ফাইল, ডেটাবেস) এ লগ পাঠাতে সহায়তা করে। Custom Logging Messages তৈরি করার মাধ্যমে আপনি আপনার লগিং প্রক্রিয়াটিকে আরও স্পষ্ট, কার্যকর এবং বোধগম্য করে তুলতে পারেন।
এই টিউটোরিয়ালে, আমরা দেখব কিভাবে Log4j এর মাধ্যমে Custom Logging Messages তৈরি করা যায় এবং সেই সাথে এটি কিভাবে কনফিগার করা যায়।
Log4j ব্যবহার করতে, প্রথমে আপনাকে Log4j এর ডিপেনডেন্সি আপনার Maven বা Gradle প্রোজেক্টে যোগ করতে হবে।
<dependencies>
<!-- Log4j Dependency -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
dependencies {
implementation 'org.apache.logging.log4j:log4j-api:2.14.1'
implementation 'org.apache.logging.log4j:log4j-core:2.14.1'
}
এখানে, log4j-api এবং log4j-core ডিপেনডেন্সি ব্যবহার করা হয়েছে, যা Log4j ফ্রেমওয়ার্কের জন্য প্রয়োজনীয়।
Log4j ব্যবহার করতে হলে আপনাকে একটি কনফিগারেশন ফাইল তৈরি করতে হবে (যেমন log4j2.xml)। এই ফাইলে আপনি লগিং লেভেল, আউটপুট ফরম্যাট, এবং লগিং স্থান কনফিগার করতে পারেন।
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<Appenders>
<!-- Console Appender: logs to the console -->
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n" />
</Console>
<!-- File Appender: logs to a file -->
<File name="File" fileName="logs/app.log">
<PatternLayout>
<Pattern>%d{ISO8601} [%-5level] %logger{36} - %msg%n</Pattern>
</PatternLayout>
</File>
</Appenders>
<Loggers>
<!-- Root logger: defines logging level and appender -->
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="File" />
</Root>
</Loggers>
</Configuration>
এখানে:
app.log
তৈরি করে সেখানে লগ লেখার জন্য ব্যবহৃত হচ্ছে।Log4j ব্যবহার করে কাস্টম লগিং বার্তা তৈরি করার জন্য, আপনাকে Logger ইন্টারফেস ব্যবহার করতে হবে। আপনি বিভিন্ন লেভেলে লগ বার্তা তৈরি করতে পারেন যেমন INFO
, DEBUG
, ERROR
, WARN
, এবং TRACE
।
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class CustomLoggerExample {
// Create a logger instance
private static final Logger logger = LogManager.getLogger(CustomLoggerExample.class);
public static void main(String[] args) {
// Custom info log
logger.info("This is an info message: Application started.");
// Custom debug log
logger.debug("This is a debug message: Application debug initiated.");
// Custom error log
try {
int result = 10 / 0;
} catch (ArithmeticException e) {
logger.error("This is an error message: Division by zero occurred.", e);
}
// Custom warn log
logger.warn("This is a warning message: Something may be wrong with the configuration.");
// Custom trace log
logger.trace("This is a trace message: Detailed trace for debugging.");
}
}
এখানে:
logger.info()
, logger.debug()
, logger.error()
, logger.warn()
, এবং logger.trace()
ব্যবহার করে বিভিন্ন লেভেলের কাস্টম লগ মেসেজ তৈরি করা হয়েছে।PatternLayout এর মাধ্যমে আপনি কাস্টম লগ ফরম্যাট তৈরি করতে পারেন, যা লগের আউটপুটকে আরও বেশি বোধগম্য এবং স্পষ্ট করে তোলে।
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
এখানে, %d{yyyy-MM-dd HH:mm:ss}
লগের তারিখ এবং সময় আউটপুট করবে, %t
থ্রেড নাম দেখাবে, %-5level
লগের লেভেল (INFO, DEBUG, ERROR ইত্যাদি) দেখাবে, %logger{36}
লগারের ক্লাস নাম দেখাবে, এবং %msg
লগ মেসেজ আউটপুট করবে।
<PatternLayout>
<Pattern>Timestamp: %d{yyyy-MM-dd HH:mm:ss} | Level: %-5level | Logger: %logger{1} | Message: %msg%n</Pattern>
</PatternLayout>
এখানে, %logger{1}
শুধুমাত্র লগারের ক্লাস নামের প্রথম অংশ (যেমন Main
ক্লাস থেকে M
) দেখাবে।
আপনি যদি Logback ব্যবহার করেন, তবে Logback এবং Log4j এর ইন্টিগ্রেশনও সহজ। একই কনফিগারেশন ব্যবহার করে আপনি Logback এবং Log4j এর মধ্যে পারফরম্যান্সের সুবিধা গ্রহণ করতে পারেন।
Log4j একটি শক্তিশালী লগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামে বিভিন্ন লগ মেসেজ এবং লেভেল কাস্টমাইজ করার সুবিধা প্রদান করে। Custom Logging Messages তৈরি করার মাধ্যমে আপনি লগ আউটপুটকে আরও বোধগম্য এবং কার্যকরী করে তুলতে পারেন। Log4j এর কনফিগারেশন ফাইলের মাধ্যমে আপনি কাস্টম আউটপুট ফরম্যাট তৈরি করতে পারেন এবং বিভিন্ন Appender ব্যবহার করে লগগুলো কনসোল বা ফাইলে রেকর্ড করতে পারেন। এছাড়াও, PatternLayout ব্যবহার করে আপনি লগ মেসেজের ফরম্যাট কাস্টমাইজ করতে পারবেন।
Log4j একটি জনপ্রিয় লোগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামিং ভাষায় লগিং কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। Dynamic Logging কার্যক্রমে যখন আপনি লোগ মেসেজে চলমান ডেটা অথবা ভেরিয়েবল গুলি যুক্ত করতে চান, তখন 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 সাধারণত লগ মেসেজের মধ্যে চলমান ডেটা বা ভেরিয়েবল গুলিকে Parameter Substitution হিসেবে ইনসার্ট করতে ব্যবহৃত হয়।
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
ভেরিয়েবলগুলির মান রানটাইমে সন্নিবেশিত হবে।info()
মেথড ব্যবহৃত হয়েছে।INFO User JohnDoe has logged in from IP address 192.168.0.1
এটি Placeholders ব্যবহার করে ডাইনামিকভাবে লগ ইনফরমেশন ইনসার্ট করা হচ্ছে।
Pattern Layout কনফিগারেশনটি Log4j 2.x এ log format কাস্টমাইজ করার জন্য ব্যবহৃত হয়, এবং এখানে %
সিম্বল দিয়ে Placeholders ব্যবহার করা হয়। উদাহরণস্বরূপ, %d
, %level
, %logger
, %msg
ইত্যাদি ফরম্যাট প্যাটার্ন ব্যবহার করা হয়।
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 ব্যবহার করে লগিংয়ের সময়ে exceptions কে অ্যাড করতে পারেন। এটা সাধারণত ডিবাগিং সময় ব্যবহার করা হয়।
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 লগ আউটপুট করা হয়েছে।
Log4j ব্যবহার করে Placeholders এর মাধ্যমে ডাইনামিক ডেটা লগ করা সহজ এবং কার্যকরী। Log4j 2.x এর মধ্যে %d
, %level
, %msg
ইত্যাদি প্যাটার্ন এবং {}
সিম্বল ব্যবহার করে আপনি ডাইনামিক ভেরিয়েবল এবং এক্সেপশন লগ করতে পারেন, যা ডিবাগিং এবং মনিটরিংয়ে সহায়ক। এটি পারফরম্যান্সে কোনো প্রভাব ফেলবে না এবং কোডকে পরিষ্কার এবং নিরাপদ রাখবে।
Log4j হল একটি জনপ্রিয় লগিং ফ্রেমওয়ার্ক যা Java প্রোগ্রামে লগিং কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়। এটি বিভিন্ন আউটপুট ফর্ম্যাটে লগিং করতে সক্ষম এবং কাস্টম লোগিং কনফিগারেশন তৈরি করতে সহায়তা করে। Log4j এর মাধ্যমে আপনি আপনার প্রোজেক্টে সহজে লগিং ব্যবস্থা স্থাপন করতে পারেন এবং সঠিক জায়গায় প্রয়োজনীয় তথ্য দেখতে পারেন।
এই টিউটোরিয়ালে, আমরা Log4j দিয়ে কাস্টম লগিং কনফিগারেশন এবং কাস্টম লগ মেসেজ তৈরি করার পদ্ধতি উদাহরণ সহ আলোচনা করব।
Log4j ব্যবহার করার জন্য প্রথমে এটি আপনার প্রোজেক্টে ডিপেনডেন্সি হিসেবে যুক্ত করতে হবে। এখানে, আমরা Maven প্রোজেক্টে Log4j 2 কনফিগার করব, কারণ এটি Log4j এর উন্নত সংস্করণ।
<dependencies>
<!-- Log4j 2 API -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-api</artifactId>
<version>2.14.1</version>
</dependency>
<!-- Log4j 2 Core -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.14.1</version>
</dependency>
<!-- Log4j 2 SLF4J Binding -->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.14.1</version>
</dependency>
</dependencies>
এই ডিপেনডেন্সিগুলি আপনার pom.xml ফাইলে যোগ করুন যাতে আপনার Maven প্রোজেক্টে Log4j 2 ইনস্টল হয়।
Log4j 2 এর মাধ্যমে কাস্টম লগিং কনফিগার করার জন্য আপনাকে একটি কনফিগারেশন ফাইল তৈরি করতে হবে, সাধারণত log4j2.xml নামের একটি ফাইল। এই ফাইলের মাধ্যমে আপনি লগের আউটপুট কনফিগারেশন, লেভেল এবং ফর্ম্যাট নির্ধারণ করতে পারেন।
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="WARN">
<!-- Appender configuration: Logs to console -->
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</Console>
<!-- File appender: Logs to a file -->
<File name="File" fileName="logs/application.log">
<PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n"/>
</File>
</Appenders>
<!-- Logger configuration: Root logger settings -->
<Loggers>
<Root level="debug">
<AppenderRef ref="Console"/>
<AppenderRef ref="File"/>
</Root>
<!-- Custom logger for a specific class -->
<Logger name="com.example" level="info" additivity="false">
<AppenderRef ref="Console"/>
</Logger>
</Loggers>
</Configuration>
এখানে:
application.log
ফাইলে লগ লেখা হবে।com.example
এর জন্য info
লেভেল)।Log4j 2 ব্যবহার করে আপনি কাস্টম লগিং ফাংশন তৈরি করতে পারেন। নীচে একটি উদাহরণ দেওয়া হলো যেখানে কাস্টম লগ বার্তা, লেভেল এবং আউটপুট ফরম্যাট কনফিগার করা হয়েছে।
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class CustomLogger {
// Create a logger instance
private static final Logger logger = LogManager.getLogger(CustomLogger.class);
public static void main(String[] args) {
// Log messages with different levels
logger.debug("This is a debug message");
logger.info("This is an info message");
logger.warn("This is a warning message");
logger.error("This is an error message");
logger.fatal("This is a fatal message");
// Custom logging with dynamic messages
String user = "Alice";
logger.info("User {} has logged in", user);
}
}
এখানে:
LogManager.getLogger(CustomLogger.class)
ব্যবহার করে একটি logger তৈরি করা হয়েছে।user
এর নাম প্লেসহোল্ডারে প্রবেশ করানো হয়েছে।2024-12-22 15:30:00 [main] DEBUG CustomLogger - This is a debug message
2024-12-22 15:30:00 [main] INFO CustomLogger - This is an info message
2024-12-22 15:30:00 [main] WARN CustomLogger - This is a warning message
2024-12-22 15:30:00 [main] ERROR CustomLogger - This is an error message
2024-12-22 15:30:00 [main] FATAL CustomLogger - This is a fatal message
2024-12-22 15:30:00 [main] INFO CustomLogger - User Alice has logged in
Log4j 2 এর সাহায্যে আপনি কাস্টম লগিং ফাংশন ব্যবহার করে প্রোগ্রামের পারফরম্যান্স উন্নত করতে পারেন। এটি asynchronous logging সাপোর্ট করে, যা পারফরম্যান্সের জন্য খুবই উপকারী।
<AsyncAppender name="AsyncConsole">
<AppenderRef ref="Console"/>
</AsyncAppender>
এখানে, AsyncAppender
ব্যবহার করে কনসোল আউটপুট অ্যাসিঙ্ক্রোনাসভাবে চালানো হয়েছে, যা পারফরম্যান্স বাড়ায় এবং লগ লেখার সময়ে মূল থ্রেড ব্লক হওয়ার ঝুঁকি কমায়।
<Appenders>
<RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log">
<PatternLayout>
<Pattern>%d{yyyy-MM-dd HH:mm:ss} [%t] %-5level %logger{36} - %msg%n</Pattern>
</PatternLayout>
<Policies>
<TimeBasedTriggeringPolicy interval="1" modulate="true"/>
</Policies>
</RollingFile>
</Appenders>
এখানে, RollingFileAppender ব্যবহার করে একটি নতুন ফাইল তৈরির প্যাটার্ন কনফিগার করা হয়েছে।
Log4j 2 একটি অত্যন্ত শক্তিশালী লগিং ফ্রেমওয়ার্ক যা আপনার Java প্রোগ্রামে কাস্টম লগিং সিস্টেম তৈরি করতে সাহায্য করে। Custom Logging ফিচার ব্যবহার করে আপনি বিভিন্ন লগ লেভেল এবং আউটপুট কনফিগার করতে পারেন এবং কাস্টম বার্তা লগিং করতে পারেন। এটি পারফরম্যান্সের উন্নতির জন্য Asynchronous Logging, RollingFileAppender, এবং অন্যান্য কাস্টম কনফিগারেশন প্রদান করে।
Read more