2012-01-05 9 views
14

मैं जावा 1.6 में कोड के नीचे कर दिया है:कैसे slf4j काम करता है? कोई लॉग बनाया हो रही

import org.slf4j.Logger; 
import org.slf4j.LoggerFactory; 

private static Logger log = LoggerFactory.getLogger(myfile.class); 

अब, मैं classpath & कोड में slf4j-api-1.6.4.jar & slf4j-सरल-1.6.4.jar डाल ठीक संकलित करता है लेकिन यह सभी जानकारी लॉगिंग कहां है ????

मेरे पास log.info ("test") है; लेकिन यह कोई लॉग फ़ाइल नहीं बना रहा है। मैं सामग्री नीचे के साथ log4j.properties बनाने की कोशिश की:

log4j.appender.stdout=org.apache.log4j.RollingFileAppender 
log4j.appender.stdout.File=/var/abc.log 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=[%d{dd-MMM-yyyy HH:mm:ss}]%6p %c{1}:%L - %m%n 
log4j.appender.stdout.MaxFileSize=50000KB 
log4j.appender.stdout.MaxBackupIndex=200 

log4j.rootLogger=info, stdout 

लेकिन इसके काम नहीं कर रहा है, मैं फ़ाइल के ऊपर पता log4j के लिए आवश्यक है, लेकिन कैसे slf4j काम करता है करता है ?? क्या मुझे log4j के समान कोई गुण फ़ाइल बनाने की ज़रूरत है ?? यदि हां, तो मुझे इसे कहां रखना होगा?

धन्यवाद!

+1

SLF4J सिर्फ एक लॉगिंग इंटरफ़ेस है। आपको कक्षापथ पर लॉगिंग कार्यान्वयन की आवश्यकता है। क्या तुम्हारे पास एक है? –

+0

आप slf4j-simple-1.6.4.jar आयात करते हैं, लेकिन आप log4j का उपयोग अपने लॉगर के रूप में कर रहे हैं, यही समस्या है। –

उत्तर

34

एसएलएफ 4 जे सिर्फ एक मुखौटा है जो आपको विभिन्न लॉगिंग फ्रेमवर्क को आसानी से स्विच करने की अनुमति देता है। एसएलएफ 4 जे एपीआई का उपयोग कर लॉगिंग कॉल को अंतर्निहित लॉगिंग फ्रेमवर्क में सौंप दिया जाएगा।

आपको SLF4J के लिए कोई प्रॉपर्टी फ़ाइल बनाने की आवश्यकता नहीं है। आपको केवल "SLF4J बाइंडिंग" जार का उपयोग करने की आवश्यकता है जो आपके लॉगिंग फ्रेमवर्क से मेल खाता है ताकि SLF4J API की सभी लॉगिंग कॉल को प्रतिनिधि किया जा सके। अंतर्निहित लॉगिंग ढांचे। निम्न चित्र SLF4J बीच संबंध को दर्शाता, "SLF4J बाइंडिंग", और अंतर्निहित प्रवेश

enter image description here

slf4j-simple-1.6.4.jar प्रतिनिधियों System.err को सभी घटनाओं, लेकिन नहीं प्रतिनिधियों चौखटे API.So log4j करने के लिए, आप slf4j-log4j12-1.6.4.jar का उपयोग करना चाहिए बजाय।

को सारांशित लिए, आप निम्न जार का उपयोग करना चाहिए:

  • slf4j-api-1.6.4.jar
  • slf4j-log4j12-1.6.4.jar
  • log4j-1.2.16। जार

संदर्भ

1

एसएलएफ 4 जे सिर्फ एक लॉगिंग अमूर्त है - यह कोई भी लॉग नहीं लिखता है। Logback का उपयोग करें - यह मूल रूप से एसएलएफ 4 जे लागू करता है और उसी व्यक्ति द्वारा लिखा जाता है जिसने एसएलएफ 4 जे और log4j लिखा था। एसएलएफ 4 जे और लॉगबैक एक महान ढांचे हैं - हम प्यार करते हैं कि कैसे SLF4J अन्य ढांचे (JUL, Commons Logging, log4j) को हमारे ढांचे के विकल्प (जो लॉगबैक है) पर पुल करता है।

+0

क्या मैं इस slf4j के साथ log4j का उपयोग कर सकता हूं? – Mike

+0

हां, अगर आप चाहें तो आप log4j पर लॉग इन करने के लिए SLF4J का उपयोग कर सकते हैं।यह SLF4J की सुंदरता है - इसके इंटरफ़ेस पर लॉग इन करें और जब चाहें कार्यान्वयन को बदलें। आपको फ़ाइल slf4j-log4j.jar (या ऐसा कुछ, मैं इसे स्मृति से लिख रहा हूं) को क्लासपाथ में जोड़ना होगा, और निश्चित रूप से आपको log4j गुण फ़ाइल की आवश्यकता होगी। लॉगबैक log4j के समान ही है - जैसा कि मैंने कहा था कि वे एक ही लड़के हैं। लॉगबैक लॉग 4j की कुछ कमियों से बचाता है ... उसने log4j बनाने से सीखा :) – Paul

0

मैं slf4j-api (जार) का इस्तेमाल किया। मैंने निर्भरता (जार) लॉगबैक-कोर को लॉगबैक-क्लासिक के साथ बदल दिया, फिर उसने लॉगिंग शुरू कर दी।

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