2012-01-31 23 views
5

को मैं अलग फ़ाइलों में एक ही कक्षा से संदेश डिबगिंग लॉग इन करना लॉग इन करने के लिए चुनते हैं।
क्या मेरा मतलब है कि एक ही कक्षा से मैं एक विशिष्ट डिबग बयान जबकि एक अन्य विशिष्ट डिबग बयान fileB पर जाने के लिए fileA जाने की जरूरत है।जावा log4j जो फ़ाइल

मामले में यह स्पष्ट नहीं है, मुझे क्या करना कोशिश कर रहा हूँ अन्य loggin संदेश जो इस वर्ग के आउटपुट की तुलना में एक पूरी तरह से अलग फाइल करने के लिए नेटवर्क संदेशों लॉग इन करने की है।

अगर मैं

<logger name="com.test.modules" additivity="false" > 
    <priority value="debug"/> 
    <appender-ref ref="netWorkCommunication"/> 
    <appender-ref ref="generalDebug"/> 
    </logger> 

करना तो मेरी कक्षा से प्रवेश दोनों फ़ाइलों के लिए जाना जाएगा (क्योंकि यह एक ही पैकेज से है)।

मैं log4j को कैसे कॉन्फ़िगर कर सकता हूं ताकि मैं com.test.modules के अंतर्गत कक्षाओं से कौन से लॉगिंग स्टेटमेंट का चयन कर सकूं पर कौन से फ़ाइल एपेंडर?

उत्तर

6

प्रत्येक फ़ाइल के लिए एक अलग लॉगर का उपयोग करें:

private static Logger log = Logger.getLogger(YourClass.class); 
private static Logger networkLog = Logger.getLogger("network." + YourClass.class.getName()); 
private static Logger httpLog = Logger.getLogger("http." + YourClass.class.getName()); 

और हमेशा की तरह प्रत्येक लॉगर के लिए appender परिभाषित करते हैं।

2

यह वास्तव में एक परिदृश्य में जहाँ कई वालों इस्तेमाल किया जाना चाहिए लग रहा है। नेटवर्किंग के लिए एक अलग लकड़हारा विन्यास करें और बस के लिए एक अलग appender निर्दिष्ट करें।