2012-12-16 10 views
6

मैं पथ में slf4j.jar के साथ एम्बेडेड जेट्टी 9 का उपयोग कर रहा हूं। डिफ़ॉल्ट रूप से, जेटी जानकारी के टन लॉग करता है।जेटी 9 लॉगिंग प्रोग्राम को अक्षम कैसे करें?

मैं लॉगिंग को अक्षम करना चाहता हूं, या कम से कम लॉग स्तर को INFO में बदलना चाहता हूं। मैं प्रोग्राम में यह कैसे कर सकता हूं (यानी, कुछ एक्सएमएल कॉन्फ़िगरेशन फ़ाइल डाले बिना)?

+0

एक्सएमएल/गुण फ़ाइल से क्यों बचें? वे लॉग स्तर में हेरफेर करने का सही तरीका हैं। इसके लिए प्रोग्रामिंग दृष्टिकोण खराब है क्योंकि आपको लॉग स्तर बदलने के लिए पुन: संकलित करने की आवश्यकता होगी !!!!! – SSR

+0

जब तक आप उपयोगकर्ता को जीयूआई या टीयूआई के माध्यम से स्तर को बदलने के लिए कुछ तरीकों को लागू नहीं करते हैं? आप एक रास्ता या दूसरा नहीं कह सकते कि प्रोग्रामर को क्या करना चाहिए जबतक कि आप यह नहीं जानते कि वे इसका उपयोग कैसे करेंगे। – Fallso

उत्तर

12

Logger स्तर सेट करने के लिए सीधे slf4j का उपयोग करने का कोई तरीका नहीं है, क्योंकि slf4j सिर्फ एक लॉग मुखौटा/रूटिंग एपीआई है।

आप अंतर्निहित प्रवेश कार्यान्वयन पर भरोसा करने के जैसे नाम स्थान "org.eclipse.jetty" पर लॉगिंग स्तर निर्धारित करने की आवश्यकता होगी: slf4j-simple.jar का उपयोग कर

  • , और SimpleLogger, तो आप सरल लॉगर प्रारंभ होने के बाद केवल सिस्टम गुणों के माध्यम से प्रोग्राम को स्तर पर सेट नहीं कर सकते हैं, जो कि जेवीएम में बहुत जल्दी है।

  • यदि slf4j-log4j.jar का उपयोग करते हैं, तो Log4j specific techniques का उपयोग करें।

org.apache.log4j.LogManager.getLogger("org.eclipse.jetty").setLevel(Level.WARN); 
  • तो slf4j-jdk14.jar का उपयोग कर, java.util.logging तकनीकों का उपयोग करें।
java.util.logging.LoggerFactory.getLogger("org.eclipse.jetty").setLevel(Level.WARNING); 
  • तो logback.jar का उपयोग कर, logback Logger को slf4j लॉगर डाली और फिर स्तर निर्धारित किया है।
final org.slf4j.Logger logger = org.slf4j.LoggerFactory.getLogger("org.eclipse.jetty"); 
if (!(logger instanceof ch.qos.logback.classic.Logger)) { 
    return; 
} 
ch.qos.logback.classic.Logger logbackLogger = (ch.qos.logback.classic.Logger) logger; 
logbackLogger.setLevel(ch.qos.logback.classic.Level.WARN); 
संबंधित मुद्दे