স্প্রিংবুটে লগব্যাক অক্ষম করুন


118

এটি স্প্রিংবুট অ্যাটোকন টমকেটের সাথে লগব্যাক ব্যবহার করতে নিজেই কনফিগার করে appears আমি এটিকে অক্ষম করতে এবং আমার ক্লাসপথে যেটি সরবরাহ করি তা ব্যবহার করতে চাই।

নীচে ত্রুটি বার্তা।

লগার ফ্যাক্টরি কোনও লগব্যাক লগার কনটেক্সট নয় তবে লগব্যাক ক্লাসপথে রয়েছে। হয় লগব্যাক সরান বা প্রতিযোগিতামূলক বাস্তবায়ন (ক্লাস org.slf4j.impl.SimpleLoggerFactory) শ্রেণীর অবজেক্ট [org.slf4j.impl.SimpleLoggerFactory] অবশ্যই ক্লাস ch.qos.logback.classic.LoggerContext এর উদাহরণ হতে হবে

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <artifactId>spring-boot-starter-parent</artifactId>
        <groupId>org.springframework.boot</groupId>
        <version>1.0.1.RELEASE</version>
    </parent>

    <groupId>com.fe</groupId>
    <artifactId>cloudapp</artifactId>
    <version>1.0.0</version>
    <name>Withinet-PaaS</name>
    <description>Develop your web applications in on our infrastructure and we will worry about administration and scalability of your app.</description>

    <properties>
        <java.version>1.7</java.version>
        <guava.version>16.0.1</guava.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
    <dependency>
        <groupId>com.sun.jersey</groupId>
        <artifactId>jersey-client</artifactId>
        <version>1.8</version>
    </dependency>
        <dependency>
        <groupId>com.withinet.cloudapp</groupId>
    <artifactId>slave</artifactId>
    <version>1.0.0</version>    
        </dependency>
        <dependency>
            <groupId>org.apache.wicket</groupId>
            <artifactId>wicket-core</artifactId>
            <version>6.15.0</version>
        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-core</artifactId>
            <version>4.3.0.Final</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>

        <!-- Spring Boot -->

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!-- Hibernate validator -->

        <dependency>
            <groupId>javax.validation</groupId>
            <artifactId>validation-api</artifactId>
            <version>1.1.0.Final</version>


        </dependency>
        <dependency>
            <groupId>org.hibernate</groupId>
            <artifactId>hibernate-validator-annotation-processor</artifactId>
            <version>4.1.0.Final</version>
        </dependency>

        <!-- Guava -->

        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>${guava.version}</version>
        </dependency>

        <!-- Java EE -->

        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

        <!--  Search -->
        <dependency>
            <groupId>org.apache.lucene</groupId>
            <artifactId>lucene-queryparser</artifactId>
            <version>4.8.0</version>
        </dependency>

        <!--  Security 
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-security</artifactId>
        </dependency>-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-tomcat</artifactId>
            <scope>provided</scope>
        </dependency>
    </dependencies>

    <build>

        <plugins>

            <!-- Spring Boot Maven -->

            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.withinet.cloud.Application</mainClass>
                    <layout>JAR</layout>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>
</project>

উত্তর:


143

দ্বন্দ্ব সমাধানের জন্য বসন্ত-বুট-স্টার্টার এবং বসন্ত-বুট-স্টার্টার-ওয়েব উভয়কেই বাদ দেওয়া Add

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-web</artifactId>
  <exclusions>
    <exclusion>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-logging</artifactId>
    </exclusion>
  </exclusions>
</dependency>

3
এটা আমার জন্য কাজ কারন যদি আমি ঐ বহিষ্কার যোগ আমি পেতে না: java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
এরিয়েল

2
একবার আপনি এটি করার পরে আপনাকে নিজের ক্লাসপথে নিজের লগার যেমন log4j সরবরাহ করতে হবে। আপনি কেন আপনার আবেদন থেকে ডিফল্ট লগারকে বাদ দিতে চান?
এফইও

1
প্রতিটি জারে কিছু 'এক্সপ্লোরেশন' না করে কোন জার লগব্যাক ঘোষণা করে তা খুঁজে পাওয়ার কোনও উপায় আছে? এবং ধন্যবাদ! এটি আমাকে সহায়তা করেছে
Vivek_ganesan

4
এমভিএন নির্ভরতা: ট্রি -ডোভারবস -ডিনকালস = স্প্রিং-বুট-স্টার্টার-লগিং
এফইও

প্রতিটি বসন্ত-বুট-স্টার্টার- * নির্ভরতা এই বর্জন যুক্ত করা একটি বিশাল ঝামেলা। দেখে মনে হচ্ছে গ্রেডল অন্তত বিশ্বব্যাপী বাদ দেওয়ার অনুমতি দেয়। এটি একা আমাকে মাভেনের কাছ থেকে স্যুইচিংয়ের বিষয়টি গুরুত্বের সাথে বিবেচনা করছে।
স্কোটিসিয়াস

59

গ্রেডলে আরও ভাল, আরও জেনেরিক সমাধান যুক্ত করতে (সমস্ত উদাহরণ বাদ দেওয়া হবে):

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

Https://docs.gradle.org/current/userguide/d dependency_management.html থেকে


1
এটি আমার এবং কমপক্ষে 7 অন্যান্য ব্যক্তির পক্ষে কাজ করে। আমি মনে করি না যে আপনার কনফিগারেশন বা পরিবেশে সমস্যাটি আমার সমাধানের জন্য ডাউনটা হতে হবে (আমি পেয়েছি যে ডাউনভোটটি আমি পেয়েছিলাম তা আপনার মন্তব্য থেকে হয়েছিল - আমি ভুল হলে ক্ষমা চাই)।
হ্যাঙ্ককা

1
অন্যান্য সমস্ত কনফিগার চেষ্টা করে দেখেছেন, এটিই কেবল আমার জন্য কাজ করেছে
টিমোথাইলিফোর্ড

এটি কাজ করে না, আমি এখনও দেখতে পাচ্ছিspring-boot-starter-logging
অ্যাডাম আর্ল্ড

40

গ্রেডে সমাধান যুক্ত করতে।

dependencies {
    compile ('org.springframework.boot:spring-boot-starter') {
        exclude module : 'spring-boot-starter-logging'
    }
    compile ('org.springframework.boot:spring-boot-starter-web') {
        exclude module : 'spring-boot-starter-logging'
    }
}

14

আমি দেখেছি যে সম্পূর্ণ spring-boot-starter-loggingমডিউলটি বাদ দিয়ে প্রয়োজনীয় নয়। org.slf4j:slf4j-log4j12মডিউলটি বাদ দেওয়া দরকার needed

এটিকে গ্রেডল বিল্ড ফাইলে যুক্ত করা সমস্যার সমাধান করবে:

configurations {
    runtime.exclude group: "org.slf4j", module: "slf4j-log4j12"
    compile.exclude group: "org.slf4j", module: "slf4j-log4j12"
}

আরও তথ্যের জন্য এই অন্যান্য স্ট্যাকওভারফ্লো উত্তরটি দেখুন।


11

আমি আমার সমস্যা সমাধানের জন্য এটি করি

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-log4j</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
        </exclusion>
    </exclusions>
</dependency>


9

আপনার pom.xML এ বসন্ত-বুট-স্টার্টার-পরীক্ষাটি সন্ধান করুন এবং এটি নীচে পরিবর্তন করুন:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>commons-logging</artifactId>
                <groupId>commons-logging</groupId>
            </exclusion>
        </exclusions>
        <scope>test</scope>
    </dependency>

এটি এর মতো ত্রুটি স্থির করে:

_Caused by: java.lang.IllegalArgumentException:_ **LoggerFactory** is not a **Logback LoggerContext** but *Logback* is on the classpath.

Either remove **Logback** or the competing implementation

(_class org.apache.logging.slf4j.Log4jLoggerFactory_
loaded from file: 

**${M2_HOME}/repository/org/apache/logging/log4j/log4j-slf4j-impl/2.6.2/log4j-slf4j-impl-2.6.2.jar**).

If you are using WebLogic you will need to add **'org.slf4j'** to prefer-application-packages in WEB-INF/weblogic.xml: **org.apache.logging.slf4j.Log4jLoggerFactory**

7

নিম্নলিখিত আমার জন্য কাজ

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

এটির সাথে আমি এখনও চূড়ান্ত নিদর্শনগুলিতে লগব্যাক জেআরগুলি দেখতে পেলাম (বুটের মাভেন প্লাগইনের পরিবর্তে অ্যাসেম্বলি প্লাগইন ব্যবহার করছিলাম - সুতরাং এটি নিশ্চিত নয় যে এটি বুট প্যাকেজিংয়ের সাথে কাজ করে কিনা)
জনক বান্দারা

7

আপনার পছন্দের লগারটি হুবহু কী এবং আপনি এটি ব্যবহার ও ইনস্টল করার জন্য কী করেছেন তা যদি বলা যায় তবে এটি সাহায্য করতে পারে। যাইহোক, স্প্রিং বুট ক্লাসপথের যা কিছু রয়েছে তার সাথে কাজ করার চেষ্টা করে, তাই যদি আপনি লগব্যাক না চান, এটি ক্লাসপথ থেকে সরিয়ে ফেলুন। ডক্সগুলিতে লগ 4j এর জন্য নির্দেশাবলী রয়েছে , তবে একই জিনিসটি অন্যান্য সমর্থিত লগিং সিস্টেমে (slf4j, log4j বা জাভা ব্যবহারের কোনও কিছুই) প্রযোজ্য।


3
আমি slf4j ব্যবহার করি এবং আমি আমার ম্যাভেন পম ফাইলে লগব্যাক দেখতে পাচ্ছি না।
এফইও

Logback হয় একটি slf4j এটির। আপনি নিজের পোম শেয়ার করতে পারেন?
ডেভ সায়ার

আমি অন্য কোনও slf4j বাস্তবায়ন স্পষ্টভাবে দেখতে পাচ্ছি না, সুতরাং এটি অবশ্যই ট্রানজিটিভের মধ্যে চলে আসবে। নির্ভরতাগুলি কল্পনা করার জন্য আপনি এম 2 ই (এক্সলিপস) বা "এমভিএন নির্ভরতা: ট্রি" এর মতো সরঞ্জামগুলি ব্যবহার করতে পারেন। এক্সিলিপ টুলিংয়ের নির্ভরতা বাদ দেওয়ার জন্যও একটি জিইউআই রয়েছে (এটিই আপনাকে করতে হবে - এর মধ্যে একটি বাদ দিন)। আপনার যদি ইতিমধ্যে একটি সম্পূর্ণ slf4j (জিসিএল ব্রিজ সহ) থাকে তবে "স্প্রিং-বুট-স্টার্টার-লগিং" বাদ দেওয়া যথেষ্ট।
ডেভ সায়ার

5

আমি নীচে এটির মাধ্যমে আমার সমস্যার সমাধান করেছি:

compile('org.mybatis.spring.boot:mybatis-spring-boot-starter:1.3.0'){
    exclude module: 'log4j-slf4j-impl'
    exclude module: 'logback-classic'
}
compile('org.springframework.boot:spring-boot-starter-web'){
    exclude module: 'log4j-slf4j-impl'
    exclude module: 'logback-classic'
}

5

এটি আমার পক্ষে ঠিক কাজ করেছে

configurations {
    all*.exclude module : 'spring-boot-starter-logging'
}

তবে এটি maven ব্যবহারকারীদের জন্য কার্যকর হবে না । আমার সমস্ত নির্ভরতা libs.gradle এ ছিল এবং আমি অন্য ফাইলগুলিতে সেগুলি চাইনি। তাই এই সমস্যার সমাধান করা হয় যোগ করে exclude module : 'spring-boot-starter-loggingspring-boot-starter-data-jpa, spring-boot-starter-testএবং কার্যত বুট শব্দ দিয়ে সবকিছু।

হালনাগাদ

আমার নতুন প্রকল্পে একটি আপডেটের দরকার ছিল, spring-boot-starter-test1.5 এবং আরও পুরানোটি নেই spring-boot-starter-logging। 2.0 এটি আছে


5

আমার ক্ষেত্রে, এটি থেকে কেবল spring-boot-starter-loggingশিল্পকর্মটি বাদ দেওয়া দরকার ছিল spring-boot-starter-security

এটি একটি নতুন উত্পাদিত স্প্রিং বুট ২.২.. রয়েছে LE

  • বসন্ত-বুট স্টার্টার সুরক্ষার
  • বসন্ত-বুট স্টার্টার-বৈধতা
  • বসন্ত-বুট স্টার্টার ওয়েব
  • বসন্ত-বুট স্টার্টার পরীক্ষার

আমি দৌড়ে mvn dependency:treeএবং সন্ধান করে খুঁজে পেয়েছি ch.qos.logback

<dependencies>আমার pom.xmlদেখায় সম্পর্কিত স্প্রিং বুটটি এরকম:

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-security</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>           
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-log4j2</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-validation</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-configuration-processor</artifactId>
        <optional>true</optional>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
        <exclusions>
            <exclusion>
                <groupId>org.junit.vintage</groupId>
                <artifactId>junit-vintage-engine</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

    <dependency>
        <groupId>org.springframework.security</groupId>
        <artifactId>spring-security-test</artifactId>
        <scope>test</scope>
    </dependency>



</dependencies>

এটি বসন্ত-বুট-স্টার্টার-লগিং বাদ দিয়ে কাজ করেছে
প্রীতেক মেহতা

4

এটি আপনার বিল্ড.gradle এ যুক্ত করুন

configurations.all {
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat'
    exclude group: 'org.springframework.boot', module: 'spring-boot-starter-logging'
    exclude group: 'org.springframework.boot', module: 'logback-classic'
}

2

আপনি লগ 4j2 ব্যবহার করার চেষ্টা করার সময় যদি এই ত্রুটিটি স্প্রিংবুটে ঘটে থাকে তবে এই পদক্ষেপগুলি করুন:

  • এই "বাদ দিনগ্রুপআইডস লগ 4j-slf4j-impl / বাদ দাও গ্রুপআইডস" যোগ করে প্যাকিংয়ের সময় জারটি সরিয়ে ফেলুন
  • "এমভিএন ডিপেন্ডেসি: ট্রি" কমান্ডটি ব্যবহার করে "লগব্যাক-ক্লাসিক" এর উপর নির্ভর করে কোন লাইব্রেরিটি নির্ভর করে তা সন্ধান করুন
  • আপনি যেখানেই এটি খুঁজে পান তা নির্ভরতা থেকে বাদ দিন।

এই ত্রুটিটি ঘটেছে কারণ লগব্যাক লগ 4j2 পরিবর্তনগুলিকে ওভাররাইড করে। সুতরাং আপনি যদি লগ 4j2 ব্যবহার করতে চান তবে আপনাকে লগব্যাক গ্রন্থাগার এবং নির্ভরতাগুলি সরিয়ে ফেলতে হবে।

আশা করি এটি কারও সাহায্য করবে।


2

ডিফল্ট লগিং বাদ দেওয়ার সঠিক উপায় এবং লগিংয়ের জন্য log4j কনফিগার করুন।

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter</artifactId>
 <exclusions>
     <exclusion>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-logging</artifactId>
     </exclusion>
 </exclusions>
</dependency>

পড়ুন স্প্রিং লগিং - কিভাবে করতে


1

নেটবিয়ান আইডিই থেকে লগব্যাকের জন্য একটি বর্জন যুক্ত করতে

  1. প্রকল্পসমূহ এক্সপ্লোরার অ্যাক্সেস করুনআপনার প্রকল্পের জন্য বিভাগ
  2. নীচে প্রদর্শিত হিসাবে > নির্ভরতাতে এগিয়ে যান
  3. 'বসন্ত-বুট-স্টার্টার-লগিং-এক্সএনএক্সজার' ট্রেস করুন
  4. পাত্রে ডান ক্লিক করুন এবং নীচের চিত্রের মতো নির্ভরতা বাদ দিন select এটি এর মতো pom.xML এ লগব্যাক জার বাদ দেয় না;

      <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    

এখানে চিত্র বর্ণনা লিখুন


1

আমার ক্ষেত্রে নীচে বর্জন কাজ করে !!

    <dependency>
        <groupId>com.xyz.util</groupId>
        <artifactId>xyz-web-util</artifactId>
        <exclusions>
            <exclusion>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

1

ব্যতিক্রম যুক্ত করা আমার পক্ষে যথেষ্ট ছিল না। আমাকে একটি জাল জার সরবরাহ করতে হয়েছিল:

    <dependency>
        <groupId>ch.qos.logback</groupId>
        <artifactId>logback-classic</artifactId>
        <scope>system</scope>
        <systemPath>${project.basedir}/empty.jar</systemPath>
    </dependency>

1

কারণটি হ'ল, বসন্ত বুটটি লগব্যাকের সাথে তার ডিফল্ট লগ কনফিগারেশন হিসাবে আসে যেখানে উটটি লগ 4j ব্যবহার করে। দ্বন্দ্ব কারণ। আপনার দুটি বিকল্প রয়েছে, হয় উপরের উত্তরে উল্লিখিত বর্ণন অনুসারে বসন্ত বুট থেকে লগব্যাক সরান বা উট থেকে লগ 4 জে সরিয়ে ফেলুন।

<dependency>
            <groupId>org.apache.camel</groupId>
            <artifactId>camel-spring-boot-starter</artifactId>
            <version>${camel.version}</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

0

আপনার ক্লাসপথে কেবল লগব্যাক.এক্সএমএল কনফিগারেশন যুক্ত করুন এবং যুক্ত সমস্ত মূল সংযোজনকারী যুক্ত করে আপনার সমস্ত কনফিগারেশন যুক্ত করুন। একবার স্প্রিং বুট শিমের লোডিং সম্পূর্ণ করার পরে এটি আপনার কনফিগারেশনের উপর ভিত্তি করে লগিং শুরু করবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.