Eine clevere Möglichkeit, Logger mit SLF4J in Java / build.gradle entry / 2019 zu vereinheitlichen

Dieser Artikel richtet sich an Personen, die SLF4J verwenden möchten.

Update

Tips

Über Ausschluss

Ein Massenausschluss ist mit der folgenden Syntax möglich

configurations.all {
    exclude
}

Vereinheitlichung abhängiger Versionen

[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'
}

Ich werde wütend, wenn ich mehrere SLF4J-Gläser habe. Der Klassenpfad enthält mehrere SLF4J-Bindungen.

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.

TL;DR

Pattern 1

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.
}

Pattern 2

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

Eine clevere Möglichkeit, Logger mit SLF4J in Java / build.gradle entry / 2019 zu vereinheitlichen
Zwei Möglichkeiten, einen Thread in Java + @ zu starten
So zeigen Sie eine Webseite in Java an
Code zum Escapezeichen von JSON-Zeichenfolgen in Java
Versuchen Sie, ein Bulletin Board in Java zu erstellen
Ich wollte (a == 1 && a == 2 && a == 3) in Java wahr machen
So erstellen Sie eine Java-Umgebung in nur 3 Sekunden
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
So erstellen Sie einen Daten-URI (base64) in Java
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
So konvertieren Sie A in a und a in A mit logischem Produkt und Summe in Java
So konvertieren Sie eine Datei in ein Byte-Array in Java
Versuchen Sie, ein eingeschränktes FizzBuzz-Problem in Java zu lösen
Konvertieren Sie ein Java-Byte-Array in eine hexadezimale Zeichenfolge
Einfache Möglichkeit, die Methoden- / Feldliste in Java REPL zu überprüfen
[Anfänger] Ich habe ein Programm zum Verkauf von Kuchen in Java erstellt
Ich wollte nur eine reaktive Eigenschaft in Java erstellen
Speichern von Zeichenfolgen von ArrayList zu Zeichenfolge in Java (Personal)
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
So entwickeln und registrieren Sie eine Sota-App in Java
So simulieren Sie das Hochladen von Post-Object-Formularen in OSS in Java
Ich habe einen RESAS-API-Client in Java erstellt
Suchen Sie eine Teilmenge in Java
[Rails] Eine einfache Möglichkeit, eine Selbsteinführungsfunktion in Ihrem Profil zu implementieren
So implementieren Sie einen Job, der die Java-API in JobScheduler verwendet
So erstellen Sie ein neues Gradle + Java + Jar-Projekt in Intellij 2016.03
So bedienen Sie automatisch einen in Java unter Windows erstellten Bildschirm
Verwandeln Sie ein Array von Strings in eine Liste von Ganzzahlen in Java
So beheben Sie den unbekannten Fehler, der bei der Verwendung von slf4j in Java aufgetreten ist
So bringen Sie JDK 11 bequem in den Mac
3 Implementieren Sie einen einfachen Interpreter in Java
Multithreaded passend zur [Java] Vorlage
Ich habe ein PDF mit Java erstellt.
So erstellen Sie einen Java-Container
Wie man JAVA in 7 Tagen lernt
Protokollausgabe in Datei in Java
Ein einfaches Beispiel für Rückrufe in Java
Wie verwende ich Klassen in Java?
So benennen Sie Variablen in Java
Versuchen Sie, Yuma in Java zu implementieren
Bleiben Sie in einem Java Primer stecken
So erstellen Sie ein Java-Array
So verketten Sie Zeichenfolgen mit Java
So testen Sie eine private Methode und verspotten sie teilweise in Java
Eine eigenständige Java-App, die Protokolle mit slf4j / logback an CloudWatch-Protokolle sendet
[Persönliches Memo] Interaktion mit dem Zufallszahlengenerator in Java
Die Geschichte, zu vergessen, eine Datei in Java zu schließen und zu scheitern
So erstellen Sie eine Zip-Datei beim Gruppieren von Datenbanksuchergebnissen in Java
Selbst in Java möchte ich true mit == 1 && a == 2 && a == 3 ausgeben (PowerMockito Edition)
Ich wollte eine Diashow mit Slick modisch umsetzen.
So übergeben Sie einen Proxy, wenn Sie REST mit SSL in Java auslösen
So ermitteln Sie den absoluten Pfad eines in Java ausgeführten Verzeichnisses
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
Ich möchte für jedes Array mit Lambda-Ausdruck in Java
[Java] [Für Anfänger] So fügen Sie Elemente direkt in ein zweidimensionales Array ein
Richten Sie eine Java-GUI in einem separaten Thread ein, um die Haupt-GUI beizubehalten