CodeGym /Java Course /মডিউল 3 /Log4j এ লগ ফিল্টার

Log4j এ লগ ফিল্টার

মডিউল 3
লেভেল 5 , পাঠ 4
বিদ্যমান

5.1 ফিল্টারের তালিকা

লগার আপনাকে খুব শান্তভাবে বার্তা ফিল্টারিং কনফিগার করতে দেয়। এটি করার জন্য, তার কাছে সমস্ত ধরণের পরামিতি সহ কয়েক ডজন ফিল্টার রয়েছে। নীচের টেবিলটি সবচেয়ে জনপ্রিয় দেখায়।

ফিল্টার বর্ণনা
1 বার্স্ট ফিল্টার আপনাকে একটি প্রদত্ত লগিং স্তরের জন্য প্রতি সেকেন্ডে বার্তাগুলির ফ্রিকোয়েন্সি নিয়ন্ত্রণ করতে দেয়৷
2 কম্পোজিট ফিল্টার আপনাকে একাধিক অনুক্রমিক ফিল্টার সেট করার অনুমতি দেয়।
3 ডাইনামিক থ্রেশহোল্ড ফিল্টার লগে কিছু তথ্য পাওয়া গেলে আপনাকে বিস্তারিত লগিং সক্ষম করার অনুমতি দেয়।
4 ম্যাপফিল্টার আপনাকে বিভিন্ন পরামিতি থেকে ফিল্টারের জন্য একটি জটিল লজিক্যাল এক্সপ্রেশন তৈরি করতে দেয়।
5 মার্কার ফিল্টার আপনাকে ট্যাগ দ্বারা বার্তাগুলি ফিল্টার করার অনুমতি দেয়, ইভেন্ট লগিংয়ের সময় প্রথমে ট্যাগটি যোগ করতে হবে৷
6 RegexFilter আপনাকে একটি মাস্ক সেট করতে দেয় - একটি নিয়মিত অভিব্যক্তি।
7 স্ট্রাকচার্ড ডেটা ফিল্টার আপনাকে নির্দিষ্ট ডেটার উপস্থিতি দ্বারা বার্তাগুলিকে ফিল্টার করার অনুমতি দেয়৷
8 ThreadContextMapFilter বর্তমান থ্রেডের প্রেক্ষাপট থেকে নেওয়া ডেটার উপর ভিত্তি করে আপনাকে ফিল্টার পরিচালনা করতে দেয়।
9 থ্রেশহোল্ড ফিল্টার লগ বার্তা স্তরের উপর ভিত্তি করে লগিং নিয়ন্ত্রণ করে।
10 টাইম ফিল্টার আপনাকে নির্দিষ্ট সময়ে ফিল্টার চালু এবং বন্ধ করার অনুমতি দেয়।

নীচে আমরা তাদের মধ্যে মাত্র তিনটি সম্পর্কে কথা বলব। আপনি তাদের অফিসিয়াল ওয়েবসাইটে এই ফিল্টারগুলি সম্পর্কে আরও জানতে পারেন ৷

5.2 টাইম ফিল্টার

ফিল্টারটি TimeFilterআপনাকে একটি নির্দিষ্ট সময়ে ফিল্টার চালু এবং বন্ধ করতে দেয়, এতে 5টি পরামিতি রয়েছে:

1 শুরু বিন্যাসে লগিং শুরু সময়HH:mm:ss
2 শেষ বিন্যাসে লগ অফ সময়HH:mm:ss
3 সময় অঞ্চল সময় অঞ্চল সেট করে।
4 ম্যাচ ফিল্টার কন্ডিশন সত্য হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_
5 অমিল ফিল্টার কন্ডিশন মিথ্যা হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_

আসুন একটি ফিল্টার সেট আপ করি যা প্রতিদিন সকাল 5টায় লগিং চালু করবে এবং প্রতিদিন 5:30 এ এটি বন্ধ করবে। সম্পূর্ণ ফিল্টার কনফিগারেশন সহ একটি উদাহরণ নীচে দেওয়া হল:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <TimeFilter start="05:00:00" end="05:30:00" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.3 রেজেক্স ফিল্টার

ফিল্টারটি RegexFilterআপনাকে বার্তাগুলি ফিল্টার করার জন্য একটি মাস্ক (নিয়মিত অভিব্যক্তি) সেট করতে দেয়। এই ফিল্টারটির 4টি পরামিতি রয়েছে:

1 regex একটি নিয়মিত অভিব্যক্তি নির্দিষ্ট করে - একটি মুখোশ যা বার্তাগুলি ফিল্টার করতে ব্যবহৃত হয়।HH:mm:ss
2 useRawMsg ফর্ম্যাট করার আগে (সত্য) বা ফর্ম্যাট করার পরে (মিথ্যা) মাস্কটি মেসেজে প্রয়োগ করা হয়
3 ম্যাচ ফিল্টার কন্ডিশন সত্য হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_
4 অমিল ফিল্টার কন্ডিশন মিথ্যা হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_

আসুন একটি ফিল্টার সেট আপ করি যা শুধুমাত্র জাভারুশ শব্দ ধারণকারী বার্তাগুলিকে অনুমতি দেবে৷ সম্পূর্ণ ফিল্টার কনফিগারেশন সহ একটি উদাহরণ নীচে দেওয়া হল:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log"   filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
        <RegexFilter regex=".* codegym .*" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
      </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>

5.4 থ্রেশহোল্ড ফিল্টার

থ্রেশহোল্ড ফিল্টার ফিল্টার আপনাকে বার্তা স্তর দ্বারা ফিল্টারিং কনফিগার করতে দেয়। এটির মাত্র 3টি পরামিতি রয়েছে:

1 স্তর বার্তা লগিং স্তরের নাম সেট করে: ERROR, DEBUG, …
2 ম্যাচ ফিল্টার কন্ডিশন সত্য হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_
3 অমিল ফিল্টার কন্ডিশন মিথ্যা হলে কিভাবে লগ করবেন । হতে পারে ACCEPT, DENYবা NEUTRAL। ডিফল্ট NEUTRAL_

আসুন একটি ফিল্টার সেট আপ করি যা শুধুমাত্র স্তরের বার্তাগুলিকে অনুমতি দেবে DEBUG। সম্পূর্ণ ফিল্টার কনফিগারেশন সহ একটি উদাহরণ নীচে দেওয়া হল:


    <?xml version="1.0" encoding="UTF-8"?>
    <Configuration status="warn" name="MyApp" packages="">
    <Appenders>
        <RollingFile name="RollingFile" fileName="logs/app.log" filePattern="logs/app-%d{MM-dd-yyyy}.log.gz">
           <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
        <PatternLayout>
            <pattern>%d %p %c{1.} [%t] %m%n</pattern>
        </PatternLayout>
        <TimeBasedTriggeringPolicy />
        </RollingFile>
    </Appenders>
    <Loggers>
        <Root level="error">
        <AppenderRef ref="RollingFile"/>
        </Root>
    </Loggers>
    </Configuration>
মন্তব্য
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION