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.
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
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());
}
}
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