[JAVA] Un mémorandum pour créer un enregistreur étendu à l'aide de org.slf4j.Logger

Aperçu

org.slf4j.Logger peut être utilisé à des fins générales, mais il est nécessaire d'unifier le niveau de sortie du journal pour les applications métier. Par conséquent, créez un journal étendu qui génère uniquement le niveau de trace défini dans la règle métier.

Classe de journalisation étendue

Créez votre propre classe de journalisation qui encapsule org.slf4j.Logger. Laissez simplement la méthode de sortie à org.slf4j.Logger Le niveau de débogage est affiché uniquement pendant le développement.

SystemLogger.java


/**
 * 
 */
package jp.co.product.system.common;

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

/**
 *Classe commune de sortie de journal
 * 
 */
public class SystemLogger {

	private Logger logger;
	
	/**
	 *constructeur
	 * 
	 * @param	cls	
	 * @see	org.slf4j.LoggerFactory#getLogger(Class)
	 */
	public SystemLogger(Class<?> cls) {
		logger = LoggerFactory.getLogger(cls);
	}
	
	/**
	 *Sortie d'erreur
	 * 
	 * @param msg Contenu de la sortie du journal
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void error(String msg) {
		logger.error(msg);
	}
	
	/**
	 *Sortie d'informations
	 * 
	 * @param msg Contenu de la sortie du journal
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void info(String msg) {
		logger.info(msg);
	}
	
	/**
	 *Sortie de débogage
	 * 
	 * @param msg Contenu de la sortie du journal
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void debug(String msg) {
		if (logger.isDebugEnabled())
			logger.debug(msg);
	}
}

log4j.properties

log4j.properties est comme d'habitude. Définissez-le simplement pour qu'il puisse être généré par la classe qui implémente le journal étendu.

log4j.properties


log4j.rootCategory=INFO, stdout

log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %p [%c] - <%m>%n

log4j.logger.org.apache.activemq=ERROR
log4j.logger.org.springframework.batch=DEBUG
log4j.logger.org.springframework.transaction=INFO
log4j.logger.jp.co.product.system.batch=INFO

log4j.logger.test.jdbc=DEBUG
# for debugging datasource initialization
# log4j.category.test.jdbc=DEBUG

Classe d'appel

Créez simplement une instance de la classe de journalisation étendue et utilisez-la. Puisqu'il s'agit d'une source d'échantillon, l'instanciation n'est pas singleton ... (T & T)

ExampleItemWriter.java


package jp.co.product.system.batch.demo;

import java.util.List;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.item.ItemWriter;
import org.springframework.stereotype.Component;

import jp.co.product.system.common.SystemLogger;


/**
 * Dummy {@link ItemWriter} which only logs data it receives.
 */
@Component("writer")
public class ExampleItemWriter implements ItemWriter<Object> {

	//private static final Log log = LogFactory.getLog(SystemLoggerExampleItemWriter.class);
	private static final SystemLogger log = new SystemLogger(ExampleItemWriter.class);
	
	/**
	 * @see ItemWriter#write(java.util.List)
	 */
	public void write(List<? extends Object> data) throws Exception {
//		log.info(data);
		log.debug("debug" + data.toString());
		log.info("Info" + data.toString());
		log.error("error" + data.toString());
	}
}

Environnement de vérification

Validé par Spring Batch Une erreur slf4j est générée lors de l'exécution. Nécessite la définition du module slf4j en se référant au site suivant Exterminez le mystérieux SLF4J WARN avec GAE / J

pom.xml


<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>1.7.2</version>
</dependency>
<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-log4j12</artifactId>
    <version>1.7.2</version>
</dependency>

Recommended Posts

Un mémorandum pour créer un enregistreur étendu à l'aide de org.slf4j.Logger
Procédure de publication d'une application à l'aide d'AWS (4) Création d'une base de données
J'ai essayé d'utiliser l'instruction Extended for en Java
Créer un calendrier avec Ruby
Création d'un hôte Docker sur AWS à l'aide de Docker Machine (mémorandum personnel)
Création d'un calendrier hebdomadaire 2021 (recharge pour notebook système) avec Ruby
Un mémorandum pour écrire un beau code
[Opération non autorisée] Un mémorandum car une erreur s'est produite lors de la création d'une instance EC2.
[Java] Comment transformer un tableau à deux dimensions avec une instruction for étendue
Mémorandum des débutants en développement d'applications Android
[Création] Un mémorandum sur le codage en Java
Dupliquer un objet à l'aide d'un type générique
Créez une animation dans laquelle les personnages émergent un instant avec la méthode de la dynamique moléculaire
Création d'une fonction de saisie semi-automatique à l'aide d'actes-comme-taggable-on et Tagit.js
[Java] Création d'un fichier Excel à l'aide d'Apache POI
Construire un pipeline CICD à l'aide de Docker (mémorandum personnel)
Un outil pour frapper du SQL arbitraire en utilisant JDBC
[Rails] Création d'une liste de miettes de pain à l'aide de Gem gretel
Rêver de créer facilement une API Web pour la base de données d'un système Java existant