2011-11-15 11 views
6

पर जा रहे हैं मैं अपने आवेदन में लॉग 4j का उपयोग कर रहा हूं और कुछ एपेंडर डीबग और त्रुटि के लिए कर रहा हूं। मैंने टॉमकैट पर इसका परीक्षण किया और ठीक काम किया। सभी संबंधित फाइलों में सभी लॉग उत्पन्न करना। लेकिन जब मैं WAS6.1 पर कोड तैनात करता हूं तो सभी लॉग केवल SystemOut.log के अंदर उत्पन्न हो रहे हैं।वेबस्पेयर सभी लॉग सिस्टमऑट.लॉग

कृपया मदद करें!

+0

यदि आप कुछ कोड संलग्न करते हैं तो यह अच्छा होगा। मैं websphere का उपयोग कर रहा हूं और मेरे सभी लॉग अलग लॉग फ़ाइल में प्राप्त कर रहा हूं। –

+0

क्या आप किसी भी लॉगिंग मुखौटा का उपयोग कर रहे हैं जैसे कि कॉमन्स-लॉगिंग? यदि ऐसा है, तो आपको क्लासलोडिंग ऑर्डर को पेरेंट-आखिरी में बदलना चाहिए। – szhem

+0

आपको माता-पिता को आखिरी बार करने की ज़रूरत नहीं है, और जैसा कि इसके अन्य प्रभाव हैं, यदि संभव हो तो मैं इससे बचूंगा। – dbreaux

उत्तर

8

समस्या यह हो सकती है कि वेबस्पेयर 6.1 आंतरिक रूप से जकार्ता कॉमन्स लॉगिंग (जेसीएल) का उपयोग करता है, और यदि आपका कोई भी कोड या तृतीय-पक्ष पुस्तकालय भी जेसीएल का उपयोग करता है, तो WebSphere की कॉन्फ़िगरेशन आपके अनुप्रयोग के साथ log4j का उपयोग करने का प्रयास कर रही है। यदि यह हो रहा है, तो आप देखेंगे कि आप क्या देख रहे हैं।

कई references और blog posts हैं जो इसे संबोधित करने के तरीकों का वर्णन करते हैं। हमें आपके वेब एप्लिकेशन (WAR संग्रह की जड़ में) META-INF/services निर्देशिका में org.apache.commons.logging.LogFactory नाम की एक फ़ाइल बनाने के लिए सबसे सरल मिला है।

org.apache.commons.logging.impl.Log4jFactory 

(कम से कम WebSphere ... के नए संस्करणों के साथ) एक और महत्वपूर्ण है कि JCL जार log4j जार के रूप में एक ही स्थान से भरी हुई किया जाना चाहिए: यह फ़ाइल लाइन शामिल होना चाहिए। जैसे या तो दोनों वेब-आईएनएफ/lib या दोनों साझा पुस्तकालय से। इस प्रकार, आप वेबस्पेयर की अपनी प्रदत्त प्रति से जेसीएल लोड करने पर वापस नहीं आ सकते हैं। अगर वे different classloaders से लोड होते हैं, तो वे एक-दूसरे को ठीक से नहीं देख सकते हैं।

संबंधित मुद्दे