Parece que Springboot se autoconfigura para usar Logback con Tomcat. Me gustaría deshabilitar esto y usar el que proporciono en mi classpath.
El mensaje de error a continuación.
LoggerFactory no es un Logback LoggerContext pero Logback está en la ruta de clases. Elimine Logback o la implementación de la competencia (clase org.slf4j.impl.SimpleLoggerFactory) El objeto de la clase [org.slf4j.impl.SimpleLoggerFactory] debe ser una instancia de la clase 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
fuente
fuente
java.lang.ClassNotFoundException: org.apache.commons.logging.LogFactory
.Para agregar una solución mejor y más genérica en Gradle (se excluirán todas las instancias):
De https://docs.gradle.org/current/userguide/dependency_management.html
fuente
spring-boot-starter-logging
Para agregar una solución en gradle.
fuente
Descubrí que
spring-boot-starter-logging
no es necesario excluir el módulo completo . Todo lo que se necesita es excluir elorg.slf4j:slf4j-log4j12
módulo.Agregar esto a un archivo de compilación de Gradle resolverá el problema:
Vea esta otra respuesta de StackOverflow para más detalles.
fuente
Me gusta esto para resolver mi problema
fuente
Para gradle,
Puede ver esta solución en: http://www.idanfridman.com/how-to-exclude-libraries-from-dependcies-using-gradle/
Sólo es necesario añadir
exclude
enconfigurations
:fuente
Busque spring-boot-starter-test en su pom.xml y modifíquelo de la siguiente manera:
Se corrigió un error como:
fuente
Siguiendo trabajos para mi
fuente
Podría ayudar si dice cuál es exactamente su registrador preferido y qué hizo para intentar instalarlo. De todos modos, Spring Boot intenta trabajar con lo que sea que esté en la ruta de clases, así que si no desea iniciar sesión, quítelo de la ruta de clases. Hay instrucciones para log4j en los documentos , pero lo mismo se aplicaría a otros sistemas de registro compatibles (cualquier cosa slf4j, log4j o java util).
fuente
Resolví mi problema a través de esto a continuación:
fuente
Esto funcionó para mí muy bien
Pero no funcionaría para los usuarios expertos . Todas mis dependencias estaban en libs.gradle y no las quería en otros archivos. Por lo que este problema se resolvió mediante la adición
exclude module : 'spring-boot-starter-logging
despring-boot-starter-data-jpa
,spring-boot-starter-test
y en prácticamente todo con la palabra de arranque.ACTUALIZAR
El nuevo proyecto mío necesitaba una actualización, resulta que la versión
spring-boot-starter-test
1.5 y anterior no la teníaspring-boot-starter-logging
. 2.0 lo tienefuente
En mi caso, solo era necesario excluir el
spring-boot-starter-logging
artefacto delspring-boot-starter-security
uno.Esto está en un proyecto de arranque de primavera 2.2.6.RELEASE recién generado que incluye las siguientes dependencias:
Lo descubrí corriendo
mvn dependency:tree
y buscandoch.qos.logback
.La bota de primavera relacionada
<dependencies>
en mi sepom.xml
ve así:fuente
Agregue esto en su build.gradle
fuente
Si este error ocurrió en SpringBoot cuando intenta usar log4j2, siga estos pasos:
Este error se produjo porque el logback anula los cambios de log4j2. Entonces, si desea usar log4j2, debe eliminar la biblioteca de logback y las dependencias.
Espero que esto ayude a alguien.
fuente
Forma correcta de excluir el registro predeterminado y configurar log4j para el registro.
Consulte Spring Logging - Cómo .
fuente
Para agregar una exclusión para el logback de Netbeans IDE
Haga clic con el botón derecho en el frasco y seleccione Excluir dependencia como se muestra a continuación. Esto excluye el jar de logback en pom.xml como este;
fuente
En mi caso, la exclusión a continuación funciona !!
fuente
Agregar exclusiones no fue suficiente para mí. Tuve que proporcionar un frasco falso:
fuente
La razón es que Spring Boot viene con logback como configuración de registro predeterminada, mientras que camel usa log4j. Ésa es la razón del conflicto. Tiene dos opciones, eliminar logback de spring boot como se menciona en las respuestas anteriores o eliminar log4j de camel.
fuente
Simplemente agregue la configuración logback.xml en su classpath y agregue toda su configuración con el agregado de raíz agregado. Una vez que el arranque de Spring complete la carga del bean, comenzará a registrar según su configuración.
fuente