2009-05-17 18 views
13

मैं लॉग 4j के साथ अपाचे कॉमन्स लॉगिंग और एसएलएफ 4 जे का उपयोग कर रहा हूं, लेकिन मैं log4j.properties को conf/log4.properties जैसे कस्टम स्थान में भी उपयोग करना चाहता हूं। अगर मैंएक कस्टम प्लेस में लॉग 4j गुण

PropertyConfigurator.configure("conf/log4j.properties"); 

का उपयोग तो मेरे ऐप log4j से बंधा और एसीएल और SLF4J होने के उद्देश्य धरा है

: यहाँ समस्या है।

ऐप के बिना यह कॉन्फ़िगर करने का सबसे अच्छा तरीका क्या है कि लॉगिंग कार्यान्वयन क्या है?

उत्तर

24

मुझे लगता है कि करने के लिए सबसे आसान बात log4j.configuration सिस्टम प्रॉपर्टी का उपयोग कर फ़ाइल का स्थान निर्दिष्ट करती है। Log4J manual में उदाहरण अपनाने:

java -Dlog4j.configuration=conf/log4j.properties -classpath ... 

मुझे विश्वास है कि log4j "log4j.properties" classpath पर कहीं भी नाम की एक फ़ाइल मिलेगा, लेकिन मतिभ्रमित जा सकता है। कोशिश करने के लायक है, हालांकि।

+9

असल में वी एम तर्क के साथ कॉन्फ़िग फ़ाइल स्थान निर्दिष्ट कर सकते हैं, मैं ओ पी के रूप में एक ही समस्या थी, लेकिन अपने समाधान मेरे लिए काम नहीं किया। मुझे एक URL शैली प्रपत्र (-Dlog4j.configuration = file: ///my/conf/log4j.properties) में log4j.properties फ़ाइल का स्थान निर्दिष्ट करना था। – Haes

+1

पूरे दौर में उपरोक्त। फाइल के बाद केवल एक फॉरवर्ड स्लैश के साथ मेरे लिए काम किया: -Dlog4j.configuration = file:/C: /JBoss51/jboss-eap-5.1 /..../ log4j.properties विंडोज 7 मशीन पर जेबीएसएस 5.1 ईएपी पर। – CodeClimber

+0

@kdgregory ... हम फ़ाइल का स्थान कहां निर्दिष्ट करते हैं, क्या यह ग्रहण परियोजना में RUN कॉन्फ़िगरेशन में VM तर्कों में है या यह tomcat में कॉन्फ़िगरेशन फ़ाइल है? – MKod

3

जैसा कि आप कहते हैं, PropertiesConfigurator का आह्वान करके, आप log4j पर अपना आवेदन डाल रहे हैं। हालांकि, इस टाई का विस्तार काफी सीमित है। आप आसानी से PropertiesConfigurator पर आक्रमण लाइन को हटा सकते हैं और अपना कोड पुनः संकलित कर सकते हैं। ऐसा करने के बाद, यह मानते हुए कि आप लॉगिंग के लिए SLF4J API का उपयोग कर रहे हैं, आप लॉगबैक-क्लासिक या j.u.l कहते हैं, आप लॉग 4j को अन्य लॉगिंग फ्रेमवर्क के साथ दोबारा बदल सकते हैं। जार फ़ाइलों को बदलकर बस। इस प्रकार, एसएलएफ 4 जे अभी भी एक बड़े विस्तार के लिए अपने उद्देश्य की सेवा करता है। मैं बच्चे को स्नान के पानी से बाहर नहीं फेंकूंगा।

1

आप

-Dlog4j.configuration="file:/C:/workspace3/local/log4j.properties"

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