Parece que o Springboot se autoconfigura para usar o Logback com o Tomcat. Eu gostaria de desabilitar isso e usar aquele que forneço no meu caminho de classe.
A mensagem de erro abaixo.
LoggerFactory não é um Logback LoggerContext, mas Logback está no caminho de classe. Remova o Logback ou a implementação concorrente (classe org.slf4j.impl.SimpleLoggerFactory) O objeto da classe [org.slf4j.impl.SimpleLoggerFactory] deve ser uma instância da classe 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>
spring-boot
FOO
fonte
fonte
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
.Para adicionar uma solução melhor e mais genérica no Gradle (todas as instâncias serão excluídas):
De https://docs.gradle.org/current/userguide/dependency_management.html
fonte
spring-boot-starter-logging
Para adicionar uma solução no gradle.
fonte
Descobri que
spring-boot-starter-logging
não é necessário excluir o módulo completo . Tudo o que é necessário é excluir oorg.slf4j:slf4j-log4j12
módulo.Adicionar isso a um arquivo de compilação do Gradle resolverá o problema:
Veja esta outra resposta StackOverflow para mais detalhes.
fonte
Eu gosto disso para resolver meu problema
fonte
Para gradle,
Você pode ver essa solução em: http://www.idanfridman.com/how-to-exclude-libraries-from-dependcies-using-gradle/
Só precisa adicionar
exclude
emconfigurations
:fonte
Encontre spring-boot-starter-test em seu pom.xml e modifique-o da seguinte maneira:
Ele corrigiu erros como:
fonte
Seguir funciona para mim
fonte
Pode ajudar se você disser qual é exatamente o seu logger preferido e o que você fez para tentar instalá-lo. De qualquer forma, o Spring Boot tenta trabalhar com o que quer que esteja no caminho de classe, então se você não quiser logback, retire-o do caminho de classe. Existem instruções para log4j nos documentos , mas a mesma coisa se aplica a outros sistemas de registro suportados (qualquer coisa slf4j, log4j ou java util).
fonte
Resolvi meu problema através do seguinte:
fonte
Isso funcionou muito bem para mim
Mas não funcionaria para usuários maven . Todas as minhas dependências estavam em libs.gradle e eu não as queria em outros arquivos. Portanto, este problema foi resolvido pela adição
exclude module : 'spring-boot-starter-logging
despring-boot-starter-data-jpa
,spring-boot-starter-test
e em praticamente tudo com a palavra boot.ATUALIZAR
Meu novo projeto precisava de uma atualização, mas
spring-boot-starter-test
1.5 e anteriores não precisavamspring-boot-starter-logging
. 2.0 tem issofonte
No meu caso, foi necessário apenas excluir o
spring-boot-starter-logging
artefato despring-boot-starter-security
um.Este é um projeto Spring boot 2.2.6.RELEASE recém-gerado, incluindo as seguintes dependências:
Eu descobri correndo
mvn dependency:tree
e procurandoch.qos.logback
.A bota de mola relacionada
<dependencies>
na minhapom.xml
parece assim:fonte
Adicione isso em seu build.gradle
fonte
Se esse erro ocorreu no SpringBoot quando você estava tentando usar o log4j2, siga estas etapas:
Este erro ocorreu porque o logback substituiu as alterações do log4j2. SO se você quiser usar o log4j2, você deve remover a biblioteca de logback e as dependências.
Espero que isso ajude alguém.
fonte
Maneira correta de excluir o log padrão e configurar o log4j para o log.
Consulte Spring Logging - Como .
fonte
Para adicionar uma exclusão para logback do Netbeans IDE
Clique com o botão direito no jar e selecione Excluir Dependência como mostrado abaixo. Isso exclui o jar de logback no pom.xml como este;
fonte
No meu caso abaixo, a exclusão funciona !!
fonte
Adicionar exclusões não foi suficiente para mim. Tive que fornecer um frasco falso:
fonte
O motivo é que o spring boot vem com logback como configuração de log padrão, enquanto o camel usa o log4j. Essa é a razão do conflito. Você tem duas opções, remover o logback do Spring Boot conforme mencionado nas respostas acima ou remover o log4j do camel.
fonte
Basta adicionar a configuração logback.xml em seu classpath e adicionar todas as suas configurações com o appender root adicionado. Assim que a inicialização do Spring completar o carregamento do bean, ele começará a registrar com base em sua configuração.
fonte