Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java

Méthode d'acquisition générale

private static final Logger logger = LoggerFactory.getLogger(TestSub1.class);

Dans ce cas, la description est différente pour chaque fichier de classe et il faut faire attention lors de la copie.

TestSample1.java


package test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestSample1 {

	private static final Logger logger = LoggerFactory.getLogger(TestSub1.class);

	public void exec() {
		logger.debug("Exec method was executed.");
	}
}

Utilisez ceci

private final Logger logger = LoggerFactory.getLogger(this.getClass());

Si vous utilisez ceci, vous ne pouvez pas le rendre «statique», mais vous pouvez le copier car la description est la même dans chaque fichier de classe.

TestSample2.java


package test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestSample2 {

	private final Logger logger = LoggerFactory.getLogger(this.getClass());

	public void exec() {
		logger.debug("TestSample#Exec method was executed.");
	}
}

Utiliser la méthode d'acquisition du nom de classe

private static final Logger logger = LoggerFactory.getLogger(Util.getClassName());

En utilisant la méthode ʻUtil # getClassName`, tous les fichiers de classe ont la même description et peuvent être copiés. Il peut également être utilisé avec «statique».

TestSample3.java


package test;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class TestSample3 {

	private static final Logger logger = LoggerFactory.getLogger(Util.getClassName());

	public void exec() {
		logger.debug("TestSample3#exec method was executed.");
	}
}

Util.java


package test;

public class Util {
	public static String getClassName() {
		return Thread.currentThread().getStackTrace()[2].getClassName();
	}
}

Pour CDI

Il est possible d'injecter des instances dans Logger en utilisant @ Produces et @ Inject. Tous les fichiers de classe ont la même description et peuvent être copiés.

SampleManagedBean.java


package test.mb;

import java.io.Serializable;

import javax.enterprise.context.SessionScoped;
import javax.inject.Inject;
import javax.inject.Named;

import org.slf4j.Logger;

@Named
@SessionScoped
public class SampleManagedBean implements Serializable {

	private static final long serialVersionUID = 1L;

	@Inject
	private transient Logger logger;

	public String execute() {
		logger.info("SampleManagedBean#execute method was executed.");
		return null;
	}
}

LoggerFactoryProducer.java


package test.util;

import javax.enterprise.context.Dependent;
import javax.enterprise.inject.Produces;
import javax.enterprise.inject.spi.InjectionPoint;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

@Dependent
public class LoggerFactoryProducer {

    @Produces
    public Logger getLogger(InjectionPoint ip) {
    	return LoggerFactory.getLogger(ip.getMember().getDeclaringClass().getName());
    }
}

c'est tout

Recommended Posts

Comment obtenir le nom de classe de l'argument de LoggerFactory.getLogger lors de l'utilisation de SLF4J en Java
Comment obtenir le nom d'une classe / méthode exécutée en Java
Comment résoudre l'erreur inconnue apparue lors de l'utilisation de slf4j en Java
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment obtenir la date avec Java
Comment obtenir la longueur d'un fichier audio avec Java
Quand tu te perds dans le nom de la classe
Comment obtenir une classe depuis Element en Java
Comment trouver le nombre total de pages lors de la pagination en Java
Comment obtenir le chemin absolu d'un répertoire s'exécutant en Java
[Java] Comment obtenir l'URL de la source de transition
Obtenez le nom du scénario de test dans la classe de test JUnit
[Java] Comment obtenir la valeur maximale de HashMap
graphql-ruby: Comment obtenir le nom de la requête ou de la mutation dans le contrôleur Remarque
[Java] Comment obtenir facilement la plus longue chaîne de caractères d'ArrayList à l'aide de stream
Comment nommer des variables en Java
Comment dériver le dernier jour du mois en Java
Résumé de l'utilisation du jeu de proxy dans IE lors de la connexion avec Java
[Java] Obtenez des informations sur la date 10 jours plus tard en utilisant la milliseconde dans la classe Date
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
Comment incrémenter la valeur de Map sur une ligne en Java
Obtenez le résultat de POST en Java
[Java] Comment utiliser la classe File
[Java] Comment obtenir le répertoire actuel
[Traitement × Java] Comment utiliser la classe
[Java] Comment utiliser la classe Calendar
Comment savoir quelle version Java d'un fichier de classe a été compilée
Comment contraindre l'action de la destination de transition lorsqu'elle n'est pas connectée
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
Je veux obtenir le nom de champ du champ [Java]. (Vieux ton d'histoire)
Comment référencer une colonne lors du remplacement de la méthode de nom de colonne dans ActiveRecord
Comment créer votre propre annotation en Java et obtenir la valeur
Comment obtenir une liste de noms de feuilles Excel en Java (POI vs SAX)
Comment obtenir les informations d'identification Keycloak dans la classe d'intercepteur
Comment obtenir le jour d'aujourd'hui
[Java] Comment obtenir l'URL redirigée finale
[Swift] Comment obtenir le nombre d'éléments dans un tableau (super basique)
Comment faire en sorte que la chaîne de requête émette réellement lors de l'utilisation de PreparedStatement dans JDBC
Exemple de code pour obtenir les valeurs de type SQL clés dans Java + MySQL 8.0
Dans Apache POI 3.15, lorsque j'obtiens le résultat d'une formule, FormulaParseException se produit (la formule fait référence à "cellule avec le nom de la feuille comprenant" ・ ")
Obtenez l'URL de la destination de la redirection HTTP en Java
[Java] Comment omettre le constructeur privé dans Lombok
[Kotlin] Récupère le nom de l'argument du constructeur par réflexion
Comment écrire Scala du point de vue de Java
[Java] Comment extraire le nom du fichier du chemin
Source utilisée pour obtenir l'URL de la source de redirection en Java
[Rails] Comment changer le nom de colonne de la table
[Java] Récupère le fichier dans le fichier jar quel que soit l'environnement
À partir d'avril 2018 Comment installer Java 8 sur Mac
[Android] Comment obtenir la langue de réglage du terminal
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
[Rails] Comment obtenir le contenu des paramètres forts
Résumé de la mise en œuvre des arguments par défaut en Java
[Swift] Comment obtenir l'ID de document Firebase
Différences de code lors de l'utilisation du système de longueur en Java
Récapitulez les éléments supplémentaires de la classe Optional dans Java 9
[Java] Comment obtenir la clé et la valeur stockées dans Map par traitement itératif