log4j: নির্দিষ্ট শ্রেণীর আবেদনের জন্য নির্দিষ্ট শ্রেণীর লগ আউটপুট


161

আমি লগ 4j ব্যবহার করি এবং নির্দিষ্ট লগারের আউটপুটকে নির্দিষ্ট ফাইলগুলিতে রুট করতে চাই।

আমার কাছে ইতিমধ্যে একাধিক অ্যাপেন্ডার রয়েছে। এখন, ডিবাগিং সহজ করার জন্য, আমি লগ 4 জে বলতে চাই যে একটি নির্দিষ্ট শ্রেণীর দ্বারা উত্পন্ন আউটপুট (যেমন foo.bar.Baz) একটি নির্দিষ্ট লগ ফাইলে লেখা উচিত।

এই কাজ করা যাবে?

উত্তর:


203

একটি উদাহরণ:

log4j.rootLogger=ERROR, logfile

log4j.appender.logfile=org.apache.log4j.DailyRollingFileAppender
log4j.appender.logfile.datePattern='-'dd'.log'
log4j.appender.logfile.File=log/radius-prod.log
log4j.appender.logfile.layout=org.apache.log4j.PatternLayout
log4j.appender.logfile.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n

log4j.logger.foo.bar.Baz=DEBUG, myappender
log4j.additivity.foo.bar.Baz=false

log4j.appender.myappender=org.apache.log4j.DailyRollingFileAppender
log4j.appender.myappender.datePattern='-'dd'.log'
log4j.appender.myappender.File=log/access-ext-dmz-prod.log
log4j.appender.myappender.layout=org.apache.log4j.PatternLayout
log4j.appender.myappender.layout.ConversionPattern=%-6r %d{ISO8601} %-5p %40.40c %x - %m\n

21
আহ - এই সহজ! ধন্যবাদ! লগ 4j.add حساس.foo.bar.Baz = মিথ্যা সেটিংটি কি প্রয়োগ করে যে বাজ আউটপুট রুটলগারের অ্যাপেন্ডারে প্রদর্শিত হবে না?
gubrutz

3
লগ 4 জে এর কোন সংস্করণ এটির জন্য? লগ 4 জে সংস্করণ 1.2.17
এসি

1
@ রডরিগো গ্রাগেল হ্যাঁ, সেখানে অস্বাভাবিক কিছু নেই
মরিস পেরি

4
@ দ্বিজোহনস্টন মিথ্যাতে সংবেদনশীলতা নির্ধারণ করা লগারের পূর্বপুরুষদের অ্যাপেন্ডারগুলিতে লগ করতে বাধা দেবে (এটি পূর্বনির্ধারিত সত্য), এই ক্ষেত্রে যদি সংযোজনটি সত্য থেকে ছেড়ে দেওয়া হত তবে বাজেস অ্যাপেন্ডারে লগিং উভয় ফাইলেই লিখতে পারত।
মরিস পেরি

1
এক্সএমএল কনফিগারেশনে কোন চিন্তাভাবনা?
ইগোর ডনিন

21

এক্সএমএল কনফিগারেশন সম্পর্কিত একটি উত্তর এখানে নোট করুন, আপনি যদি ফাইল অ্যাপেন্ডারকে একটি ConversionPatternনা দেন তবে এটি 0 বাইট ফাইল তৈরি করে এবং কিছু না লিখে তৈরি করবে:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
    <appender name="console" class="org.apache.log4j.ConsoleAppender">
        <param name="Target" value="System.out"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
    </appender>

    <appender name="bdfile" class="org.apache.log4j.RollingFileAppender">
        <param name="append" value="false"/>
        <param name="maxFileSize" value="1GB"/>
        <param name="maxBackupIndex" value="2"/>
        <param name="file" value="/tmp/bd.log"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
        </layout>
    </appender>

    <logger name="com.example.mypackage" additivity="false">
        <level value="debug"/>
        <appender-ref ref="bdfile"/>
    </logger>

    <root>
        <priority value="info"/>
        <appender-ref ref="bdfile"/>
        <appender-ref ref="console"/>
    </root>

</log4j:configuration>

2
এটা মুছে ফেলার জন্য সমালোচনামূলক <appender-ref ref="bdfile"/>থেকে <root>অন্যথায় আপনি আপনার পুরো লগ পাশাপাশি এই ফাইলটি কপি দেখতে হবে -।
সাব

এটি কীভাবে ডিফল্ট প্যাকাকেজ বা প্যাকেজ ছাড়াই নির্দিষ্ট শ্রেণীর জন্য কনফিগার করবেন?
প্রসাদ যাদব

এটা <logger>...উপাদান। শ্রেণি বা প্যাকেজটিকে নাম হিসাবে এবং অ্যাপেন্ডারটিকে ফাইল অ্যাপেন্ডার হিসাবে নির্দিষ্ট করুন।
মাইকেব
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.