CodeGym/Java Course/মডিউল 3/Log4j এ অ্যাপেন্ডার

Log4j এ অ্যাপেন্ডার

বিদ্যমান

পরিশিষ্টের তালিকা

লগার আপনাকে একবারে একাধিক ফাইলে ডেটা সংরক্ষণ করতে দেয়। এই ধরনের আউটপুট ডেটা স্ট্রিমগুলিকে অ্যাপেন্ডার (অ্যাপেন্ড থেকে) বলা হয়। বেশ কয়েকটি স্ট্যান্ডার্ড অ্যাপেন্ডার রয়েছে, তাই আমরা শুধুমাত্র সবচেয়ে জনপ্রিয়গুলি কভার করব:

এপেন্ডার বর্ণনা
1 কনসোল কনসোলে ডেটা প্রিন্ট করে
2 ফাইল একটি ফাইলে ডেটা আউটপুট করে
3 ডেইলি রোলিং ফাইল একটি ফাইলে ডেটা আউটপুট করে, ফাইলটি চক্রাকারে ওভাররাইট হয়
4 অ্যাসিঙ্ক আপনাকে অ্যাসিঙ্ক্রোনাসভাবে অন্য অ্যাপেন্ডারে ডেটা লেখার অনুমতি দেয়
5 সকেট একটি নির্দিষ্ট সকেটে ডেটা লেখে
6 জেডিবিসি JDBC প্রোটোকল ব্যবহার করে ডাটাবেসে বার্তা লেখে
7 জেপিএ JPA প্রোটোকল ব্যবহার করে ডাটাবেসে বার্তা লেখে
8 HTTP HTTP প্রোটোকলের মাধ্যমে একটি দূরবর্তী সার্ভারে ইভেন্ট পাঠায়
9 SMTP একটি বাফারে বার্তা সঞ্চয় করে, এবং তারপর একটি ইমেল হিসাবে পাঠায়

সমস্ত অ্যাপেন্ডারের জন্য ভাল ডকুমেন্টেশন তাদের অফিসিয়াল ওয়েবসাইটে রয়েছে

এবং নীচে আমরা তাদের মধ্যে সবচেয়ে জনপ্রিয় এবং সহজ বিবেচনা করব।

কনসোলঅ্যাপেন্ডার

সহজতম পরিশিষ্ট হলConsoleApender । আপনি অনুমান করতে পারেন, তিনি কেবল তার বার্তাগুলি কনসোলে লেখেন। এটি আমাদের জন্য বেশ কয়েকটি আকর্ষণীয় পরামিতি রয়েছে:

গুণাবলী
1 নাম সংযোজনকারীর নাম
2 ছাঁকনি আপনাকে কিছু বার্তা ফিল্টার করার অনুমতি দেয়
3 বিন্যাস আউটপুট করার সময় বার্তাগুলির বিন্যাস নির্দিষ্ট করে
4 লক্ষ্য কোথায় লিখতে হবে তা নির্দিষ্ট করে: SYTEM_OUTবাSYSTEM_ERR

এটি কনফিগার করা খুব সহজ:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <Console name="STDOUT" target="SYSTEM_OUT">
    <PatternLayout pattern="%m%n"/>
    </Console>
</Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="STDOUT"/>
    </Root>
</Loggers>
</Configuration>

ফাইলঅ্যাপেন্ডার

সবচেয়ে দরকারী পরিশিষ্ট হয়FileAppender . ভিন্ন ConsoleAppenderতিনি একটি ফাইলে তার বার্তা লেখেন। আপনার অ্যাপ্লিকেশনটি সার্ভারে কোথাও চললে এটি খুবই কার্যকর। এটা অনেক পরামিতি আছে, কারণ এটি অবশ্যই বিভিন্ন অপারেটিং সিস্টেমে ফাইল লিখতে সক্ষম হবে।

কিন্তু আমরা তাদের মধ্যে শুধুমাত্র সবচেয়ে জনপ্রিয় বিবেচনা করবে।

1 নাম অ্যাপেন্ডারের নাম উল্লেখ করে
2 ছাঁকনি আপনাকে কিছু বার্তা ফিল্টার করার অনুমতি দেয়
3 বিন্যাস আউটপুট করার সময় বার্তাগুলির বিন্যাস নির্দিষ্ট করে
4 ফাইলের নাম ফাইলের নাম উল্লেখ করে যেখানে বার্তা লিখতে হবে
5 সংযোজন যদি true, তাহলে বার্তাগুলি পুরানো লগে যোগ করা হবে, if false- প্রতিবার অ্যাপ্লিকেশন শুরু করার সময় লগ ফাইলটি পুনরায় তৈরি করা হবে।
6 বাফারের আকার বাফার আকার বাইটে সেট করে
7 অবিলম্বে ফ্লাশ যদি true, তাহলে প্রতিটি বার্তা আসলে অবিলম্বে ডিস্কে লেখা হয় (বাফার ছাড়াই)। লগটি ধীরে ধীরে কাজ করতে শুরু করে, কিন্তু প্রোগ্রামটি ক্র্যাশ হলে এটি আপনাকে ডেটা হারানো থেকে বাঁচায়।

আপনি ইতিমধ্যে ফাইলগুলির সাথে ভালভাবে কাজ করতে জানেন, তাই এই সেটিংস আপনার জন্য নতুন কিছু নয়৷ এই ধরনের লগার কনফিগার করা কনসোল লগারের চেয়েও সহজ:

<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="warn" name="MyApp" packages="">
<Appenders>
    <File name="MyFile" fileName="logs/app.log">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    </File>
</Appenders>
<Loggers>
    <Root level="error">
    <AppenderRef ref="MyFile"/>
    </Root>
</Loggers>
</Configuration>

রোলিংফাইলঅ্যাপেন্ডার

সবচেয়ে জনপ্রিয় অ্যাপেন্ডার হলRollingFileAppender । এটি থেকে ভিন্ন FileAppender, এটি আপনাকে অনেক ছোট ফাইলে লগ বিভক্ত করতে দেয়। এটি বড় লগের জন্য খুবই গুরুত্বপূর্ণ। এছাড়াও, এটি আপনাকে নতুন ফাইলগুলি লেখা শুরু করার পরে পুরানো ফাইলগুলির সাথে কী করতে হবে তার নিয়ম সেট করার অনুমতি দেয়।

এবং এই অ্যাপেন্ডারে প্রায় একশটি ভিন্ন সেটিংস রয়েছে। আপনি লিঙ্কে তাদের সম্পর্কে আরও জানতে পারেন ।

এই অ্যাপেন্ডারের সর্বাধিক জনপ্রিয় বৈশিষ্ট্যগুলি বিবেচনা করুন:

গুণাবলী
1 নাম অ্যাপেন্ডারের নাম উল্লেখ করে
2 ছাঁকনি আপনাকে কিছু বার্তা ফিল্টার করার অনুমতি দেয়
3 বিন্যাস আউটপুট করার সময় বার্তাগুলির বিন্যাস নির্দিষ্ট করে
4 ফাইলের নাম ফাইলের নাম উল্লেখ করে যেখানে বার্তা লিখতে হবে
5 ফাইল প্যাটার্ন সংরক্ষণাগার ফাইলগুলির জন্য একটি নামকরণ প্যাটার্ন নির্দিষ্ট করে যা আর লেখা হয় না
6 নীতি ফাইলটি কখন ওভাররাইট করা শুরু করা উচিত তা নির্দিষ্ট করে
7 কৌশল পুরানো ফাইলগুলির সাথে কী করতে হবে তা বর্ণনা করে: সংরক্ষণাগার, কত দিনের জন্য ইতিহাস রাখতে হবে ইত্যাদি।

এখানে একটি ভাল উদাহরণ:

<Configuration status="warn" name="MyApp" packages="">
  <Appenders>
    <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}-%i.log.gz">
    <PatternLayout>
        <Pattern>%d %p %c{1.} [%t] %m%n</Pattern>
    </PatternLayout>
    <Policies>
        <TimeBasedTriggeringPolicy />
        <SizeBasedTriggeringPolicy size="250 MB"/>
    </Policies>
    </RollingFile>
  </Appenders>
  <Loggers>
    <Root level="error">
    <AppenderRef ref="RollingFile"/>
    </Root>
  </Loggers>
</Configuration>

প্যারামিটারটি filePatternপুরানো লগগুলির সংরক্ষণাগারগুলির জন্য একটি টেমপ্লেট নির্দিষ্ট করে৷ এছাড়াও দুটি আছে, যখন ট্রিগার করা হয়, একটি নতুন ফাইল লেখা হবে:

  • TimeBasedTriggeringPolicy- একটি নতুন দিন শুরু হলে কাজ করবে (বর্তমান তারিখ পরিবর্তন)
  • SizeBasedTriggeringPolicy- ফাইলের আকার 250MB এ পৌঁছালে কাজ করবে
মন্তব্য
  • জনপ্রিয়
  • নতুন
  • পুরানো
মন্তব্য লেখার জন্য তোমাকে অবশ্যই সাইন ইন করতে হবে
এই পাতায় এখনও কোনো মন্তব্য নেই