SLF4J: वर्ग को लोड करने में विफल "org.slf4j.impl.StaticLoggerBinder"


619

मेरे आवेदन को tcServer और WebSphere 6.1 दोनों पर तैनात किया जाना है। यह एप्लिकेशन ehCache का उपयोग करता है और इसलिए एक निर्भरता के रूप में slf4j की आवश्यकता होती है। परिणामस्वरूप मैंने slf4j-api.jar (1.6) जार को अपने युद्ध फ़ाइल बंडल में जोड़ा है।

एप्लिकेशन निम्न त्रुटि को छोड़कर tcServer में ठीक काम करता है:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

हालांकि, जब मैं WebSphere में तैनात होता हूं तो मुझे ए java.lang.NoClassDefFoundError: org.slf4j.impl.StaticLoggerBinder

इसके साथ ही Failed to load class "org.slf4j.impl.StaticMDCBinder"

मैंने दोनों एप्लिकेशन सर्वरों के क्लासपैथ की जाँच की है और कोई अन्य slf4j जार नहीं है।

क्या किसी के पास कोई विचार है जो यहां हो रहा है?


इस लेख ने मेरी समस्या को हल कर दिया
लेखाकार

जवाबों:


517

मैं वेबस्फेयर 6.1 के साथ एक ही मुद्दा था। जैसा कि कैकी ने बताया, वे टन थे जो वेबस्फीयर इस्तेमाल कर रहे थे और उनमें से एक slf4j के पुराने संस्करण की ओर इशारा कर रहा था।

नो-ओप फॉलबैक केवल slf4j -1.6+ के साथ होता है, इसलिए इससे अधिक पुरानी कोई चीज अपवाद को नहीं फेंकती और आपकी तैनाती को रोक देती है।

SLf4J साइट में एक प्रलेखन है जो इसे हल करता है। मैंने उसका अनुसरण किया और slf4j-simple-1.6.1.jarअपने आवेदन में जोड़ा slf4j-api-1.6.1.jarजिसके साथ मेरे पास पहले से था।

इससे मेरी समस्या हल हो गई। आशा है कि यह उन लोगों की मदद करता है जिनके पास यह मुद्दा है।


4
हाँ, त्रुटि यहाँ भी बताई गई है - slf4j.org/manual.html लेकिन मुझे अब एक नई त्रुटि मिली - इसके कारण: java.lang.ClassNotFoundException: org.apache.commons.logging.ogFactory
david blaine

1
"जैसा कि कैकी ने बताया था, वेबरफेयर का उपयोग करने वाले टन के जार थे और उनमें से एक slf4j के पुराने संस्करण की ओर इशारा कर रहा था।" - मावेन निर्भरता का ख्याल रखने के लिए इतना! क्या मजाक है।
AndroidDev

167
अरे आप MAVEN उपयोगकर्ता: mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.6.2
सर्जियो

2
मैं 1.7 का उपयोग कर रहा हूँ और एक ही समस्या है। मैं slf4j-simple-1.7.jar जोड़ता हूं और अब समस्या हल हो गई है।
लिटलटाइगर

1
यह मेरे लिए काम नहीं करता है। Slf4j- सरल जार log4j.properties को नहीं लेता है। इसके बजाय, मैं slf4j-log4j12 और log4j जार जोड़कर कार्यान्वयन का उपयोग करता हूं, जो मेरे लिए अच्छा काम करता है।
फ्लाई

379

यह उन लोगों के लिए है जो Google खोज से यहां आए थे।

यदि आप मावेन का उपयोग करते हैं तो बस निम्नलिखित जोड़ें

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-log4j12</artifactId>
       <version>1.7.5</version>
   </dependency>

या

   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <version>1.7.5</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-simple</artifactId>
       <version>1.6.4</version>
   </dependency>

1
वहाँ एक slf4j-simpleही संस्करण के रूप में नहीं होने के लिए एक कारण है slf4j-api? वे शायद एक साथ अच्छी तरह से काम करेंगे, लेकिन मुझे लगता है कि यह एक ही संस्करण का उपयोग करने के लिए सामान्य रूप से सुरक्षित और बेहतर अभ्यास है। इसके अलावा, यदि आपको यूनिट-परीक्षण चलाते समय, केवल कंसोल-लॉगिंग को सक्षम करने की आवश्यकता है, तो slf4j-simpleयह पर्याप्त लगता है (हालांकि यह तब भी था)।
इवलो स्लाव

22
AFAIK आपके पास slf4j का सिर्फ 1 इम्प्लांट होना चाहिए, यानी या तो slf4j-log4j12 या slf4j-simple, दोनों नहीं।
ओन्द्रा kaižka

@ आईआईटी कटकोव यह केवल स्थानीय मशीन पर काम करता है लेकिन जेनकिंस पर एक ही त्रुटि प्राप्त करना सुनिश्चित नहीं है कि क्या गलत हो रहा है। क्या आप स्पष्ट कर सकते हैं
विक्रमावि

slf4j-api को कॉन्फ़िगरेशन की आवश्यकता होती है जो तब उपलब्ध नहीं होती है जब आप इसे पहली बार चलाते हैं (और किसी भी कॉन्फ़िगरेशन फ़ाइल को संपादित नहीं किया है)। Slf4j-simple का उपयोग करने से आप किसी भी फाइल लेकिन WYSIWYG को कॉन्फ़िगर किए बिना बेसिक लॉगर का उपयोग कर सकेंगे। आप फ़ाइलों को कॉन्फ़िगर करने और लॉगर आउटपुट को अनुकूलित करना सीख सकते हैं जब आप पसंद करते हैं तो आप slf4j-api पर वापस जा सकते हैं। (फिर भी सीखते हैं कि कहाँ हैं और उन्हें खुद कैसे संपादित करना है)
क्रिस्प करें

53

बस इसे अपने में जोड़ें pom.xml में :

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.21</version>
</dependency>

3
समाधान ने मेरे लिए काम किया; यह दस्तावेज़ीकरण की ओर इशारा करने के लायक है (जहां मुझे त्रुटि मिली): slf4j.org/codes.html#StaticLoggerBinder
Witold Kaczurba

2
और कुछ नहीं, लेकिन यह मेरे लिए एक साधारण काफ्का निर्माता उदाहरण चलाते हुए काम किया। बहुत बहुत धन्यवाद!
वीरेन

@ItoldKaczurba सही है। मावेन का उपयोग करते हुए निर्भरता का उपयोग करते समय मेरे पास एक ही मुद्दा था। मैं सिर्फ googled और slf4j.org/codes.html#StaticLoggerBinder पर गया जो समस्या और इसके समाधान को बताता है। मैं slf4j-api संस्करण 1.7.25 का उपयोग कर रहा था। उल्लेख लिंक पर प्रलेखन की जाँच करने के बाद मैंने सिर्फ <निर्भरता> का इस्तेमाल किया <groupId>org.slf4j</groupId> <artifactId>slf4j-simple</artifactId> <version>1.7.25</version> </dependency>और समस्या का समाधान किया गया
मोहम्मद अनस

मुझे मावेन का उपयोग करने की बात समझ में नहीं आती है अगर पुस्तकालयों को कुछ लकड़हारे (जैसे हैंडलबार जिन्हें slf4j की आवश्यकता होती है) को अपने पोम में घोषित नहीं करना चाहिए। आपका धन्यावाद।
एरिक डुमिनील

मेरे मामले में, यह समाधान नहीं है। यह केवल छिपी हुई जानकारी है, कि slf4j और log4j या किसी अन्य प्लगइन के असंगत संस्करण हैं।
हरिप्रसाद

42

आपको अपने क्लासपाथ में निम्नलिखित जार फ़ाइल जोड़ने की आवश्यकता है slf4j-simple-1.6.2.jar:। यदि आपके पास यह नहीं है, तो कृपया इसे डाउनलोड करें। कृपया http://www.slf4j.org/codes.html#multiple_bindings देखें


लेकिन मेरे पास मेरे tcServer classpath पर वह जार नहीं है, जो मुझे भ्रमित करता है। मुझे समझ में नहीं आता कि कैसे मुझे tcServer में एक अतिरिक्त जार की जरूरत नहीं है लेकिन WebSphere में करते हैं
JJ180

1
मेरे लिए काम किया, और स्वीकृत उत्तर की तुलना में बहुत सरल है। संस्करण 1.7.7 ने भी काम किया।
ला-कोमाडरेजा

1
मैं पहले से ही अपने jul-to-slf4jमें था pom.xmlऔर बस slf4j-simpleपहले में जोड़ा गया था और यह ठीक काम करता है।
14:02

क्लास क्लास में जार फ़ाइल को कैसे जोड़ा जाता है?
डीन्यूसन

कृपया, क्या आप मुझे समझा सकते हैं कि वर्ग पथ क्या है? कहाँ है? मुझे समझ नहीं आ रहा है
Rose8525

36

यहाँ कुछ उत्तरों ने आपके maven pom फ़ाइल में slf4j-simple निर्भरता को जोड़ने की सलाह दी है। आप सबसे वर्तमान संस्करण के लिए जाँच कर सकते हैं।

पर https://mvnrepository.com/artifact/org.slf4j/slf4j-simple आप SLF4J सरल बाइंडिंग के नवीनतम संस्करण को मिल जाएगा। वह चुनें जो आपको सबसे अच्छा सूट करता है (2019-02 से अभी भी 1.7.26 2019-07 के अनुसार स्थिर संस्करण है) और इसे अपने pom.xml में शामिल करें।

आपकी सुविधा के लिए कुछ निर्भरताएँ यहाँ दिखाई गई हैं - लेकिन जब आप इसे पढ़ते हैं तो वे अद्यतित नहीं हो सकते हैं!

2019-10 का अल्फा संस्करण

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>2.0.0-alpha1</version>
 </dependency>

फरवरी 2019 का बीटा संस्करण

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-simple</artifactId>
    <version>1.8.0-beta4</version>
</dependency>

स्थिर संस्करण 2019-12

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-simple</artifactId>
   <version>1.7.30</version>
</dependency>

मैंने नीचे दिए गए टिप्पणी के लिए गुंजाइश परीक्षण भाग को हटा दिया।


6
आप उपयोग क्यों करते हैं <scope>test</scope>? अपने अनुभव में, मुझे क्लासपाथ पर runtimeसुनिश्चित करने के लिए कम से कम गुंजाइश की आवश्यकता slf4j-simpleहै। जिज्ञासु आप इसे केवल testगुंजाइश के साथ काम करने के लिए कैसे मिला ...
इको

इस बारे में बताने के लिए शुक्रिया। मैंने अपने उत्तर के अनुसार गुंजाइश टैग हटा दिया। यह एक कट और पेस्ट मुद्दा था - मैं जिस लिंक की आपूर्ति कर रहा हूं वह बीटा निर्भरता को इस तरह प्रदान करता है।
वोल्फगैंग फाहल

27

मैं उसी त्रुटि का सामना कर रहा था। मैंने अपने स्थानीय विकास में slf4j-api, slf4j-log4j12 और log4j को कॉन्फ़िगर किया है। सभी कॉन्फ़िगरेशन ठीक था, लेकिन slf4j-log4j12 निर्भरता जिसे मैंने mvanrepository से कॉपी किया था, में परीक्षण की गुंजाइश थी<scope>test</scope> । जब मैंने इसे हटाया तो हर बात ठीक है।

कुछ समय मूर्खतापूर्ण गलतियों से हमारा सिर टूट जाता है;)


1
बहुत - बहुत धन्यवाद! मेरे पास एक ही मुद्दा था और जब तक मुझे आपका पद नहीं मिला, मैं इसे छोड़ देना चाहता था।
एरोगोडियन

1
इससे मुझे भी मदद मिली
कोड 3 मिन 3

27

शायद ही कभी हमें वॉर्निन से नोट देखना चाहिए SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

यह तब होता है जब वर्ग पथ पर कोई उपयुक्त SLF4J बाइंडिंग नहीं पाया जा सकता है

आप इस चेतावनी के आने का कारण खोज सकते हैं।
से जार में से एक जोड़ा जा रहा है *slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jarया logback-classic.jar*वर्ग पथ के लिए समस्या का समाधान करना चाहिए।

compile "org.slf4j:slf4j-simple:1.6.1"

उदाहरण के लिए मावेन प्रोजेक्ट के लिए उपरोक्त कोड को अपने build.gradleया संबंधित कोड में जोड़ें pom.xml


15

slf4j-log4j12-1.6.4.jarक्लासपाथ में फ़ाइल डाल दिया जाएगा।


6
या अपने पोम में निर्भरता जोड़ें <निर्भरता> <groupId> org.slf4j </ groupId> <विरूपण साक्ष्य> slf4j-log4j12 </ विरूपण साक्ष्य> </ आश्रितता>
enkor

11

यदि आप मावेन का उपयोग निर्भरता प्रबंधन के लिए कर रहे हैं, तो आप बस pom.xml में निर्भरता जोड़ सकते हैं

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.5.6</version>
</dependency>

गैर-मावेन उपयोगकर्ताओं के लिए बस लाइब्रेरी डाउनलोड करें और इसे अपने प्रोजेक्ट क्लासपाथ में डालें।

यहां आप विवरण देख सकते हैं: http://www.mkyong.com/wicket/java-lang-classnotfoundexception-org-slf4j-impl-staticloggerbinder/


1
मावेन उपयोगकर्ताओं के लिए भी मैंने पाया कि मुझे निम्नलिखित को pom.xml में जोड़ने की आवश्यकता है, जो लॉगबैक-कोर में भी स्वचालित रूप से आता है: <निर्भरता> <groupId> ch.qos.logback </ groupId> <विरूपण साक्ष्य> लॉगबैक-क्लासिक </ / विरूपण साक्ष्य> <संस्करण> 1.0.9 </ संस्करण> </ निर्भरता>
पॉल

2
This is not an error. This message tells you that you do not have any logger implementation (such as e.g. Logback) added in classpath, and therefore NOP (No Operation) log @Paul द्वारा लॉग-क्लासिक को जोड़ने के लिए सारक्सोस टिप्पणी के लिए देखें । करने के लिए परिवर्तन की एक और दृष्टिकोण <artifactId>slf4j-simple</artifactId>से <artifactId>slf4j-api</artifactId>भी काम करता है। यह यहाँ
अभिजीत

10

SLF4j विभिन्न लॉगिंग चौखटे के लिए एक अमूर्त है । इसलिए slf4j होने के अलावा आपको अपने किसी भी लॉगिंग ढांचे जैसे log4j या logback (आदि) को अपने सहपाठी में शामिल करने की आवश्यकता है।
एक विचार के लिए http://logback.qos.ch/manual/introduction.html में पहला बेबी चरण देखें


2
लॉगबैक को जोड़ना मेरे लिए यह निश्चित है। मैंने नवीनतम लॉगबैक क्लासिक को पोम (1.1.7) में गिरा दिया और यह विफल हो गया क्योंकि slf4j निर्भरता बहुत पुरानी थी (1.6.2)। लॉगबैक को 1.0.0 में अपग्रेड करना और 1.6.x पर slf4j को छोड़ना, जैसे कि slf4j को 1.7.20 में अपग्रेड करना और 1.1.7 पर लॉगबैक को छोड़ना।
ECDragon

5

Slf4j log4j, logback, java.util.log जैसे अंतर्निहित लॉगिंग फ़्रेमवर्क का एक पहलू है।

अंतर्निहित रूपरेखाओं से जुड़ने के लिए, slf4j एक बंधन का उपयोग करता है।

  • log4j - slf4j-log4j12-1.7.21.jar
  • java.util.log - slf4j-jdk14-1.7.21.jar आदि

यदि बाइंडिंग जार छूट जाता है तो उपरोक्त त्रुटि है। आप इस जार को डाउनलोड कर सकते हैं और इसे क्लासपाथ में जोड़ सकते हैं।

मावेन निर्भरता के लिए,

<dependency> 
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>1.7.21</version>
</dependency>

Slf4j-log4j12-1.7.21.jar के अलावा यह निर्भरता, यह slf4j-api-1.7.21.jar और साथ ही log4j-1.2.17.jar को आपकी परियोजना में खींच लेगी

संदर्भ: http://www.slf4j.org/manual.html


आपका समाधान केवल एक ही था जो मेरे लिए काम करता था, धन्यवाद!
एडेनशॉ

5

मैं जावा -9 पुस्तकालय के साथ स्प्रिंग-बूट -2 अनुप्रयोगों के साथ इसी तरह की समस्या का सामना कर रहा था।

मेरे pom.xml में निम्न निर्भरता जोड़ने से मेरे लिए समस्या हल हो गई:

    <dependency>
        <groupId>com.googlecode.slf4j-maven-plugin-log</groupId>
        <artifactId>slf4j-maven-plugin-log</artifactId>
        <version>1.0.0</version>
    </dependency>

4

वेब्स्फेयर मामले में, आपके पास slf4j-api.jar का एक पुराना संस्करण है, 1.4.x. या 1.5.x कहीं आसपास पड़ा हुआ है। व्यवहार आप tcServer पर निरीक्षण करते हैं, जो कि NOP में विफल रहता है, slf4j संस्करणों पर 1.6.0 और बाद में होता है। सुनिश्चित करें कि आप सभी प्लेटफार्मों पर slf4j-api-1.6.x.jar का उपयोग कर रहे हैं और यह कि slf4j-api का कोई पुराना संस्करण वर्ग पथ पर नहीं रखा गया है।


धन्यवाद, मैंने अपना WebSphere 6.1 classpath चेक किया है और मुझे slf4j का कोई अन्य संस्करण नहीं दिखता है। उदाहरण के लिए, मैंने slf4j जार के लिए अपने WebSphere फाइल सिस्टम पर एक खोज की और मुझे केवल अपना 1.6 संस्करण वापस मिला। क्या आप जानते हैं कि अगर WebSphere slf4j के साथ आता है?
JJ180

कुछ भी संभव है, लेकिन मुझे बहुत आश्चर्य होगा अगर WebSphere slf4j-api के साथ बंडल आया। वेल्ड बंडलों slf4j-api.jar। क्या आप वेल्ड का उपयोग कर रहे हैं?
सेकी

4

निम्नलिखित त्रुटि मिलने पर मैं इस मुद्दे पर आया:

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder".
SLF4J: Defaulting to no-operation (NOP) logger implementation
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details.

जब मैं slf4j-api-1.7.5.jarअपने में उपयोग कर रहा थाlibs

प्रेरित मैंने पूरे सुझाए गए पूरक जार के साथ प्रयास किया, जैसे slf4j-log4j12-1.7.5.jar, slf4j-simple-1.7.5त्रुटि संदेश अभी भी कायम है। समस्या तब हल हुई जब मैंने slf4j-jdk14-1.7.5.jarजावा लिबास में जोड़ा ।

Http://www.slf4j.org/download.html पर संपूर्ण slf4j पैकेज प्राप्त करें


4

कृपया इस समस्या को हल करने के लिए निम्न निर्भरताएँ जोड़ें।

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-simple</artifactId>
  <version>1.7.25</version>
  <scope>test</scope>
</dependency>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>1.7.25</version>
</dependency>

मैंने सिर्फ पहली निर्भरता को शामिल किया है - जैसा कि एक अन्य उत्तर में कहा गया है - और यह काम करता है। दोनों निर्भरताएँ मेरे लिए समस्या का समाधान नहीं हैं।
RubioRic

और इंटेलीज के बंडल किए गए मावेन के बजाय स्थानीय मावेन का उपयोग करना चाहते हैं।
अब्दुल गफ्फार

4

जार समावेशन और शुद्ध मावेन समाधानों के विकल्प के रूप में, आप इसे मावेन से ग्रेडेल के साथ शामिल कर सकते हैं ।

संस्करण के लिए उदाहरण 1.7.25

// https://mvnrepository.com/artifact/org.slf4j/slf4j-simple
api group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.25'

इसे अपनी build.gradleफ़ाइल की निर्भरता में रखें ।


3

मैं एक प्रोजेक्ट स्ट्रट्स 2 + स्प्रिंग में काम कर रहा हूं। तो यह एक निर्भरता की जरूरत है slf4j-api-1.7.5.jar

यदि मैं प्रोजेक्ट चलाता हूं, तो मुझे त्रुटि मिल रही है

कक्षा को लोड करने में विफल "org.slf4j.impl.StaticLoggerBinder"

मैंने अपनी समस्या को जोड़कर हल किया slf4j-log4j12-1.7.5.jar

इस मुद्दे को हल करने के लिए अपनी परियोजना में इस जार को जोड़ें।


3

के रूप में SLF4J मैनुअल राज्यों

जावा (SLF4J) के लिए सरल लॉगिंग मुखौटा विभिन्न लॉगिंग फ्रेमवर्क, जैसे कि java.util.log, logback और log4j के लिए एक साधारण मुखौटा या अमूर्त के रूप में कार्य करता है।

तथा

जैसे ही आप अपने वर्ग पथ में एक बंधन जोड़ते हैं, चेतावनी गायब हो जाएगी।

इसलिए आपको यह चुनना चाहिए कि आप किस बंधन का उपयोग करना चाहते हैं।

NoOp बाइंडिंग (slf4j-nop)

एनओपी के लिए बाध्यकारी, चुपचाप सभी लॉगिंग को त्यागना।

Https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-nop&core=gav पर ताज़ा संस्करण देखें

सरल बंधन (slf4j- सरल)

सभी घटनाओं को System.err को आउटपुट करता है। केवल स्तर INFO और उच्चतर के संदेश मुद्रित होते हैं। यह बंधन छोटे अनुप्रयोगों के संदर्भ में उपयोगी हो सकता है।

Https://search.maven.org/search?q=g:org.slf4j%20AND%20a:slf4j-simple&core=gav पर ताज़ा संस्करण देखें

लॉगिंग फ्रेमवर्क के लिए बाइंडिंग (java.util.log, logback, log4j)

यदि आपको किसी फ़ाइल में लॉग लिखने जा रहे हैं, तो आपको इनमें से एक बाइंडिंग की आवश्यकता है।

Https://www.slf4j.org/manual.html#projectDep पर विवरण और निर्देश देखें


मेरी राय

मैं Logback की सिफारिश करूंगा क्योंकि यह log4j का उत्तराधिकारी है प्रोजेक्ट का ।

Https://search.maven.org/search?q=g:ch.qos.logback%20AND%20a:logback-classic&core=gav पर इसके लिए बाइंडिंग के नवीनतम संस्करण की जाँच करें।

आप बॉक्स से बाहर कंसोल आउटपुट प्राप्त लेकिन यदि आप फ़ाइल में लिखने लॉग करने की जरूरत है तो बस डाल FileAppenderकरने के लिए विन्यास src/main/resources/logback.xmlया करने के लिए src/test/resources/logback-test.xmlसिर्फ इस तरह:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <!-- encoders are assigned the type
             ch.qos.logback.classic.encoder.PatternLayoutEncoder by default -->
        <encoder>
            <pattern>%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n</pattern>
        </encoder>
    </appender>
    <appender name="FILE" class="ch.qos.logback.core.FileAppender">
        <file>logs/logs.log</file>

        <encoder>
            <pattern>%date %level [%thread] %logger{10} - %msg%n</pattern>
        </encoder>
    </appender>

    <root level="debug">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

    <logger level="DEBUG" name="com.myapp"/>
</configuration>

(मैनुअल में विस्तृत विवरण देखें: https://logback.qos.ch/manual/configuration.html )


3
     <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.7.21</version>
    </dependency>

उपर्युक्त निर्भरता pom.xml फ़ाइल में रखें


लेकिन नवीनतम संस्करण की जांच करना याद रखें।
user1053510

2

मैंने इस समस्या को हल करने के लिए इस निर्भरता को जोड़ा:

https://mvnrepository.com/artifact/org.slf4j/slf4j-simple/1.7.25

1

SLF4J आधिकारिक दस्तावेज के अनुसार

क्लास को लोड करने में विफल। org.slf4j.impl.StaticLoggerBinder

यह चेतावनी संदेश तब बताया जाता है जब org.slf4j.impl.StaticLoggerBinder वर्ग को मेमोरी में लोड नहीं किया जा सकता था। यह तब होता है जब वर्ग पथ पर कोई उपयुक्त SLF4J बाइंडिंग नहीं पाया जा सकता है। एक (और केवल एक) रखने वर्ग पथ पर slf4j-nop.jar, slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar या logback-classic.jar की समस्या को हल करना चाहिए।

बस अपने वर्गपथ में slf4j api.jar के साथ इस जार को जोड़ने के लिए चीजें करें। शुभकामनाएँ



1

पेअरा 5.191 पर इसी समस्या का सामना करना पड़ा

jcl-over-slf4j ने slf4j-log4j12 के साथ मिलकर समस्या को हल किया

<properties>
  <slf4j.version>1.7.29</slf4j.version>
</properties>

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-api</artifactId>
  <version>${slf4j.version}</version>
  <type>jar</type>
</dependency> 

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>jcl-over-slf4j</artifactId>
  <version>${slf4j.version}</version>
</dependency>        

<dependency>
  <groupId>org.slf4j</groupId>
  <artifactId>slf4j-log4j12</artifactId>
  <version>${slf4j.version}</version>
</dependency>

0

मुझे पता है कि यह पोस्ट थोड़ी पुरानी है, लेकिन यदि कोई और इस समस्या में भाग लेता है:

Slf4j-jdk14-XXXjar को अपने CLASSPATH में जोड़ें (जहां XXX संस्करण संख्या है - उदाहरण के लिए slf4j-jdk14-1.7.5.jar)।

एचटीएच पीटर


1
क्या आप सुझाव दे रहे हैं कि उपयोगकर्ताओं को क्लासपैड समस्या को हल करने के लिए JDK1.4 लॉगिंग पर वापस लौटना चाहिए? इस FAQ प्रविष्टि को भी देखें: slf4j.org/faq.html#need_to_recompile
mwhs

0

मैं जेना का उपयोग करता हूं और मैं pom.xml में साथी निर्भरता जोड़ देता हूं

<dependency> 
  <groupId>ch.qos.logback</groupId>
  <artifactId>logback-classic</artifactId>
  <version>1.0.13</version>
</dependency>

मैं slf4j-simple को जोड़ने की कोशिश करता हूं, लेकिन यह "SLF4J: क्लास को लोड करने में विफल हो जाता है" वर्ग org.slf4j।

आधिकारिक दस्तावेज


0

समाधान उनकी आधिकारिक वेबसाइट पर इंगित किया गया है:

क्लास को लोड करने में विफल। org.slf4j.impl.StaticLoggerBinder

यह चेतावनी संदेश तब बताया जाता है जब org.slf4j.impl.StaticLoggerBinder वर्ग को मेमोरी में लोड नहीं किया जा सकता था। यह तब होता है जब वर्ग पथ पर कोई उपयुक्त SLF4J बाइंडिंग नहीं पाया जा सकता है। Slf4j-nop.jar slf4j-simple.jar, slf4j-log4j12.jar, slf4j-jdk14.jar या क्लास बैक-क्लासिक .jar में से एक (केवल एक) को रखने से समस्या का समाधान होना चाहिए। SINCE 1.6.0 SLF4J संस्करण 1.6 के रूप में, बाध्यकारी के अभाव में, SLF4J एक नो-ऑपरेशन (NOP) लकड़हारा कार्यान्वयन के लिए डिफ़ॉल्ट होगा। यदि आप किसी एप्लिकेशन की पैकेजिंग के लिए ज़िम्मेदार हैं और लॉगिंग की परवाह नहीं करते हैं, तो अपने आवेदन के वर्ग पथ पर slf4j-nop.jar रखने से इस चेतावनी संदेश से छुटकारा मिल जाएगा। ध्यान दें कि लाइब्रेरी या फ्रेमवर्क जैसे एम्बेडेड घटक किसी भी SLF4J बाइंडिंग पर निर्भरता की घोषणा नहीं करते हैं, लेकिन केवल slf4j-api पर निर्भर करते हैं।

समाधान: मैंने intellij पर मावेन अनुसंधान का उपयोग करके अपनी परियोजना में जोड़ा है और मैंने slf4j-jdk14.jar चुना है।


0

बहुधा आपकी समस्या <scope>test</scope>(कुछ मामलों में भी <scope>provided</scope>) के कारण थी, जैसा कि @thangaraj ने उल्लेख किया है ।

प्रलेखन कहता है:

यह गुंजाइश इंगित करती है कि आवेदन के सामान्य उपयोग के लिए निर्भरता की आवश्यकता नहीं है, और केवल परीक्षण संकलन और निष्पादन चरणों के लिए उपलब्ध है। परीक्षण निर्भरताएं सकर्मक नहीं हैं और केवल परीक्षण और निष्पादन क्लासपैथ के लिए मौजूद हैं।

इसलिए, यदि आपको परीक्षण के उद्देश्यों के लिए निर्भरता की आवश्यकता नहीं है, तो आप इसके बजाय ( mvanrepository में क्या देखेंगे ) का उपयोग कर सकते हैं :

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-nop</artifactId>
    <version>1.7.24</version>
    <scope>test</scope>
</dependency>

किसी भी स्कोप के बिना (डिफ़ॉल्ट रूप से, जब कोई अन्य गुंजाइश प्रदान नहीं की जाती है तो गुंजाइश संकलित होगी ):

<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
<dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
</dependency>

यह समान है:

 <!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-nop -->
 <dependency>  
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-nop</artifactId>
   <version>1.7.25</version>
   <scope>compile</scope>
 </dependency>

0

यहाँ मेरे 5 सेंट हैं ...

परीक्षण चलाते समय मेरे पास समान मुद्दे थे। इसलिए मैंने इसे केवल टेस्ट रनटाइम के लिए एक कार्यान्वयन जोड़कर तय किया है। मैं इस प्रोजेक्ट के लिए ग्रेडेल का उपयोग कर रहा हूं।

// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic

testRuntimeOnly समूह: 'ch.qos.logback', नाम: 'लॉगबैक-क्लासिक', संस्करण: '1.2'


0

मेरे लिए यह मुद्दा था: हाइबरनेट का उपयोग करते हुए, मैंने देखा कि यह पहले से ही slf4j का उपयोग करता था, और यह मेरे क्लासपाथ में पहले से ही था, इसलिए मैंने इसका उपयोग करने का फैसला किया। अगला कदम - slf4j के लिए इम्प्लिमेंट को जोड़ना, इसलिए मैंने मावेन को जोड़ा:

<dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-jdk14</artifactId>
        <version>1.7.25</version>
</dependency>

लेकिन यह त्रुटि के साथ विफल रहा! SLF4J: वर्ग को लोड करने में विफल "org.slf4j.impl.StaticLoggerBinder"

समाधान था: हाइबरनेट की slf4j की निर्भरता 1.7.26 संस्करण थी , और मैंने मामूली संस्करण निर्भरता 1.7.25 जोड़ी । इसलिए जब मैंने यह तय किया - सब ठीक हो गया


0

मैंने कोई निर्भरता नहीं जोड़ी, मैं सिर्फ उनके उपभोग करने के तरीके को बदलता हूं।

कोड का पूर्वावलोकन करें

(यदि आप लोचदार खोज संस्करण <7.0 का उपयोग कर रहे हैं तो इस कोड को हटा दें)

IndexRequest indexRequest = new IndexRequest(
  "twitter",
  "tweets",
  id // this is to make our consumer idempotent
).source(record.value(), XContentType.JSON);

वर्तमान कोड

IndexRequest indexRequest = new IndexRequest("tweets")
  .source(record.value(), XContentType.JSON)
  .id(id); // this is to make our consumer idempotent

मैं बल्करेक्स्ट का उपयोग कर रहा हूं और इसके साथ ही मैं उस त्रुटि को दूर करता हूं।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.