Un moyen intelligent d'unifier les enregistreurs à SLF4J dans Java / build.gradle entry / 2019

Cet article s'adresse aux personnes souhaitant utiliser SLF4J.

Update

Tips

À propos de l'exclusion

L'exclusion groupée est possible avec la syntaxe suivante

configurations.all {
    exclude
}

Unification des versions dépendantes

[3 \ .2 . Utilisation de la gestion des dépendances de Spring Boot de manière isolée](https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/html/#managing-dependencies-using-in -isolation) est pratique

Même si vous n'utilisez pas Spring Boot, vous pouvez le considérer comme un plugin Gradle et l'utiliser.

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

avec ça

build.gradle


dependencies {
	implementation 'org.springframework.boot:spring-boot-starter-web'
}

Je me fâche quand j'ai plusieurs jar SLF4J À propos du chemin de classe contient plusieurs liaisons SLF4J.

Cela semble être un problème d'IntelliJ, mais si vous utilisez SLF4J en tant que bibliothèque dépendante et que vous installez une autre version de la bibliothèque avec runtime, il y a un problème que les deux Jars sont inclus dans Classpath lors du débogage / exécution à partir d'IntelliJ. Il semble. ..

Fondamentalement, ce n'est pas grave si vous avez dependencyManagement.

TL;DR

Pattern 1

Tous les projets doivent inclure les modules nécessaires dans diverses bibliothèques de journaux> Sortie avec SLF4J, et exclure la mise en œuvre de diverses bibliothèques de journaux.

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' //En fait démarreur-Souvent inclus dans les dépendances Web

    // Used Runtime
    runtimeOnly 'org.slf4j:log4j-over-slf4j'
    // log4j 1.Seul x doit être acheminé individuellement
    //Printemps 2017 pour EOL en 2015-boot-starter-Également supprimé de la journalisation
    // 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

Il est également recommandé de créer un projet de journal uniquement qui inclut les paramètres de journal, etc.

Écrivez plus tard

build.gradle



log/build.gradle


Recommended Posts

Un moyen intelligent d'unifier les enregistreurs à SLF4J dans Java / build.gradle entry / 2019
Deux façons de démarrer un thread en Java + @
Comment afficher une page Web en Java
Code pour échapper aux chaînes JSON en Java
Essayez de créer un babillard en Java
Je voulais que (a == 1 && a == 2 && a == 3) vrai en Java
Comment créer un environnement Java en seulement 3 secondes
J'ai essayé de créer une compétence Clova en Java
Comment créer un URI de données (base64) en Java
J'ai essayé de créer une fonction de connexion avec Java
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Comment convertir un fichier en tableau d'octets en Java
Essayez de résoudre un problème FizzBuzz restreint en Java
Convertir un tableau d'octets Java en une chaîne hexadécimale
Un moyen simple de vérifier la liste des méthodes / champs dans Java REPL
[Débutant] J'ai créé un programme pour vendre des gâteaux en Java
Je voulais juste créer une propriété réactive en Java
Comment stocker des chaînes de ArrayList à String en Java (personnel)
Créer une méthode pour renvoyer le taux de taxe en Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
Comment développer et enregistrer une application Sota en Java
Comment simuler le téléchargement de formulaires post-objet vers OSS en Java
J'ai créé un client RESAS-API en Java
Rechercher un sous-ensemble en Java
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
Comment implémenter un travail qui utilise l'API Java dans JobScheduler
Comment créer un nouveau projet Gradle + Java + Jar dans Intellij 2016.03
Comment faire fonctionner automatiquement un écran créé en Java sous Windows
Convertir un tableau de chaînes en une liste d'entiers en Java
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
Comment installer confortablement JDK 11 dans votre Mac
3 Implémentez un interpréteur simple en Java
Multithread pour s'adapter au modèle [Java]
J'ai créé un PDF avec Java.
Comment créer un conteneur Java
Comment apprendre JAVA en 7 jours
Enregistrer la sortie dans un fichier en Java
Un exemple simple de rappels en Java
Comment utiliser les classes en Java?
Comment nommer des variables en Java
Essayez d'implémenter Yuma en Java
Restez coincé dans un Java Primer
Comment créer un tableau Java
Comment concaténer des chaînes avec Java
Comment tester une méthode privée et la simuler partiellement en Java
Une application Java autonome qui envoie des journaux à CloudWatch Logs avec slf4j / logback
[Mémo personnel] Comment interagir avec le générateur de nombres aléatoires en Java
L'histoire de l'oubli de fermer un fichier en Java et de l'échec
Pour créer un fichier Zip lors du regroupement des résultats de recherche de base de données en Java
Même en Java, je veux afficher true avec un == 1 && a == 2 && a == 3 (édition PowerMockito)
Je voulais mettre en place un diaporama de manière à la mode avec slick.
Comment passer un proxy lors du lancement de REST avec SSL en Java
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
Je veux ForEach un tableau avec une expression Lambda en Java
[Java] [Pour les débutants] Comment insérer des éléments directement dans un tableau à deux dimensions
Configurez une interface graphique Java dans un thread séparé pour conserver le