Dieser Artikel richtet sich an Personen, die SLF4J verwenden möchten.
Der Klassenpfad enthält mehrere SLF4J-Bindungen. SLF4J: Eine Erklärung finden Sie unter http://www.slf4j.org/codes.html#multiple_bindings.
ERROR StatusLogger Log4j2 konnte keine Protokollierungsimplementierung finden. Bitte fügen Sie log4j-core zum Klassenpfad hinzu. Verwenden Sie SimpleLogger, um sich an der Konsole anzumelden ...
Ein Massenausschluss ist mit der folgenden Syntax möglich
configurations.all {
exclude
}
[3 \ .2 . Das Abhängigkeitsmanagement von Spring Boot isoliert verwenden](https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#managing-dependencies-using-in -isolierung) ist bequem
Auch wenn Sie Spring Boot nicht verwenden, können Sie es sich als Gradle Plugin vorstellen und verwenden.
build.gradle
plugins {
id 'org.springframework.boot' version '2.1.8.RELEASE' apply false
}
apply plugin: 'io.spring.dependency-management'
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
mit diesem
build.gradle
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
}
Es scheint ein Problem von IntelliJ zu sein, aber wenn Sie SLF4J als abhängige Bibliothek verwenden und eine andere Version der Bibliothek mit Laufzeit installieren, besteht das Problem, dass beide Jars beim Debuggen / Ausführen in IntelliJ in Classpath enthalten sind. Es scheint. ..
Grundsätzlich ist es in Ordnung, wenn Sie dependencyManagement haben.
Alle Projekte sollten die erforderlichen Module in verschiedenen Protokollbibliotheken> Ausgabe mit SLF4J enthalten und die Implementierung verschiedener Protokollbibliotheken ausschließen.
build.gradle
buildscript {
repositories {
maven {
url "https://plugins.gradle.org/m2/"
}
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:2.1.8.RELEASE"
}
}
allprojects {
apply plugin: "io.spring.dependency-management"
repositories {
mavenCentral()
}
dependencyManagement {
imports {
mavenBom org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES
}
}
}
apply plugin: 'java'
dependencies {
// Used compile/coding time.
implementation 'org.springframework.boot:spring-boot-starter-logging' //Eigentlich Starter-Oft in Webabhängigkeiten enthalten
// Used Runtime
runtimeOnly 'org.slf4j:log4j-over-slf4j'
// log4j 1.Nur x muss einzeln geroutet werden
//Frühling 2017 für EOL 2015-boot-starter-Auch aus der Protokollierung entfernt
// https://github.com/spring-projects/spring-boot/issues/11148
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
configurations.all {
exclude group: 'log4j' // = Old only log4j impl.
exclude group: 'org.apache.logging.log4j', module: 'log4j-slf4j-impl'// = SLF4J > Log4J 2.x. (Apache Side)
exclude group: 'org.slf4j', module: 'slf4j-log4j12' // = SLF4J > Log4J 1.x. (SLF4J Side)
exclude group: 'org.slf4j', module: 'slf4j-jdk14' // = SLF4J > JDK14.
exclude group: 'commons-logging', module: 'commons-logging-api' // Replaced by jcl-over-slf4j
exclude group: 'commons-logging', module: 'commons-logging' // Implementation is not needed.
}
Es wird auch empfohlen, ein Nur-Protokoll-Projekt zu erstellen, das Protokolleinstellungen usw. enthält.
Schreiben Sie später
build.gradle
log/build.gradle
Recommended Posts