2015-06-30 8 views
7

मेरे पास एक लाइब्रेरी प्रोजेक्ट है। यह प्रोजेक्ट लॉगिंग के लिए log4j का उपयोग करता है।क्या मुझे log4j.properties फ़ाइल को लाइब्रेरी में रखना चाहिए?

क्या मुझे log4j.properties जेनरेट किए गए जार में रखना चाहिए?
यदि यह एक अच्छा अभ्यास नहीं है, तो क्या आप मुझे बता सकते हैं क्यों?

उत्तर

5

आपको अपनी jar फ़ाइल के बाहर अपनी log4j.properties डालना चाहिए क्योंकि इसे संशोधित करना आसान होगा। यदि एप्लिकेशन कॉन्फ़िगरेशन के एक रीलोड को मजबूर नहीं करता है (आप इसे कर सकते हैं) तो एक साधारण पुनरारंभ कॉन्फ़िगर लोड करेगा (इसे जार फ़ाइल के अंदर संशोधित करने का मतलब आमतौर पर पुनर्निर्माण होता है)। यदि एप्लिकेशन जानता है कि इसे पुनः लोड कैसे करें, तो आपके परिवर्तन लगभग तुरंत लागू किए जाएंगे। यह बहुत महत्वपूर्ण है जब आपके पास उत्पादन वातावरण में एप्लिकेशन है, और आप अधिक जानकारी प्राप्त करने के लिए लॉगिंग सेटिंग (लॉग स्तर की तरह) को बदलना चाहते हैं, लेकिन इसके लिए एप्लिकेशन को रोकने के लिए नहीं (या बदतर, इसे पुनर्निर्माण करें)।

+0

यह सब सच है, और एप्लिकेशन परिनियोजन पर भी लागू होता है। इसे * लाइब्रेरी * प्रोजेक्ट में नहीं डालने के अतिरिक्त कारण हैं - अर्थात् आप आमतौर पर उस संदर्भ को नहीं जानते जहां इसका उपयोग किया जाएगा और क्लासपाथ को प्रभावित करने वाली कॉन्फ़िगरेशन, संभावित मुद्दों का कारण बनती है। – eis

+0

विफलता के दौरान सर्वर पर डीबगिंग सक्षम करने की क्षमता एक lifesaver है। जितना हम परीक्षण करते हैं, यह अभी भी उन मुद्दों के खिलाफ गार्ड करता है जिन्हें हमने परीक्षण करने के लिए सोचा था। आगे बढ़ने वाले बेहतर परीक्षणों में फ़ीड के बारे में अतिरिक्त जानकारी प्राप्त करने की क्षमता रखने के लिए। – Gus

1

नहीं, मैं log4j.properties में अपने src/main/resources में शामिल नहीं होगा यदि यह सिर्फ एक पुस्तकालय है - लोग आपकी लाइब्रेरी का उपयोग करेंगे, और लोगों को यह कॉन्फ़िगर करना होगा कि इसे कैसे लॉग करना चाहिए।

लेकिन एक और समस्या है: यदि आप इसे अपने जार में डाल देते हैं, तो दूसरों के पास उनके क्लासपाथ में log4j भी होगा। इसलिए, अगर वे log4j (जो वे करेंगे) के लिए एक कस्टम कॉन्फ़िगरेशन चाहते हैं, तो क्लासलोडर पहली फ़ाइल चुन सकता है जो इसे मिल सकता है।

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

purpouses परीक्षण के लिए, src/test/resources में log4j शामिल करना ठीक है।

+1

मुझे नहीं लगता कि ओपी ने मेवेन का उपयोग करने के बारे में कुछ भी बताया है। स्रोत/मुख्य/संसाधन और src/test/संसाधन मेवेन अवधारणाएं हैं। इसके अलावा मैं सहमत हूं। – eis

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