[JAVA] Ein Memorandum zum Erstellen eines erweiterten Loggers mit org.slf4j.Logger

Überblick

org.slf4j.Logger kann für allgemeine Zwecke verwendet werden, es ist jedoch erforderlich, die Protokollausgabeebene für Geschäftsanwendungen zu vereinheitlichen. Erstellen Sie daher einen erweiterten Logger, der nur die in der Geschäftsregel definierte Ablaufverfolgungsstufe ausgibt.

Erweiterte Logger-Klasse

Erstellen Sie Ihre eigene Logger-Klasse, die org.slf4j.Logger umschließt. Überlassen Sie die Ausgabemethode einfach org.slf4j.Logger Die Debug-Ebene wird nur während der Entwicklung ausgegeben.

SystemLogger.java


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

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

/**
 *Gemeinsame Klasse der Protokollausgabe
 * 
 */
public class SystemLogger {

	private Logger logger;
	
	/**
	 *Konstrukteur
	 * 
	 * @param	cls	
	 * @see	org.slf4j.LoggerFactory#getLogger(Class)
	 */
	public SystemLogger(Class<?> cls) {
		logger = LoggerFactory.getLogger(cls);
	}
	
	/**
	 *Fehlerausgabe
	 * 
	 * @param msg Inhalt der Protokollausgabe
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void error(String msg) {
		logger.error(msg);
	}
	
	/**
	 *Informationsausgabe
	 * 
	 * @param msg Inhalt der Protokollausgabe
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void info(String msg) {
		logger.info(msg);
	}
	
	/**
	 *Debug-Ausgabe
	 * 
	 * @param msg Inhalt der Protokollausgabe
	 * @see	org.slf4j.Logger#error(String)
	 */
	public void debug(String msg) {
		if (logger.isDebugEnabled())
			logger.debug(msg);
	}
}

log4j.properties

log4j.properties ist wie gewohnt. Stellen Sie es einfach so ein, dass es von der Klasse ausgegeben werden kann, die den erweiterten Logger implementiert.

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

Klasse anrufen

Erstellen Sie einfach eine Instanz der erweiterten Logger-Klasse und verwenden Sie sie. Da es sich um eine Beispielquelle handelt, ist die Instanziierung kein 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());
	}
}

Überprüfungsumgebung

Validiert durch Spring Batch Zur Laufzeit wird ein slf4j-Fehler ausgegeben. Erfordert die Definition des slf4j-Moduls unter Bezugnahme auf die folgende Site Vernichte den mysteriösen SLF4J WARN mit 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

Ein Memorandum zum Erstellen eines erweiterten Loggers mit org.slf4j.Logger
Verfahren zum Veröffentlichen einer Anwendung mit AWS (4) Erstellen einer Datenbank
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
Erstellen eines Kalenders mit Ruby
Erstellen eines Docker-Hosts in AWS mit Docker Machine (persönliches Memorandum)
Erstellen eines Wochenkalenders 2021 (Nachfüllen für Systemnotizbuch) mit Ruby
Ein Memorandum zum Schreiben von schönem Code
[Nicht autorisierter Vorgang] Ein Memorandum, da beim Erstellen einer EC2-Instanz ein Fehler aufgetreten ist.
[Java] So drehen Sie ein zweidimensionales Array mit einer erweiterten for-Anweisung
Ein Memorandum für Anfänger der Android-Anwendungsentwicklung
[Erstellen] Ein Memorandum über das Codieren in Java
Duplizieren Sie ein Objekt mit einem generischen Typ
Erstellen Sie mit der molekulardynamischen Methode eine Animation, in der Charaktere für einen Moment auftauchen
Erstellen einer Funktion zur automatischen Vervollständigung mit Acts-as-Taggable-On und Tagit.js
[Java] Erstellen einer Excel-Datei mit Apache POI
Erstellen einer CICD-Pipeline mit Docker (persönliches Memorandum)
Ein Tool zum Schlagen von beliebigem SQL mit JDBC
[Rails] Erstellen einer Brotkrumenliste mit Gem gretel
Träumen Sie davon, einfach eine Web-API für die Datenbank eines vorhandenen Java-Systems zu erstellen