Informationen zur Java-Protokollausgabe

Protokollfassadenbibliothek

Das Standardprotokoll java.util.logging wurde nach log4j erstellt, war jedoch nicht vollständig beliebt, da log4j einfach zu verwenden war. Daher war eine Schnittstelle erforderlich, die nicht von der Protokollbibliothek abhängt. Wenn die Protokollbibliothek für jede Bibliothek unterschiedlich ist, ist es schwierig, die Protokolle in einer Datei zu kombinieren. Daher ist es grundsätzlich besser, SLF4J zu verwenden.

SLF4J(Simple Logging Facade For Java) Es scheint, dass es viele Konfigurationen von SLF4J + Logback oder SLF4J + Log4j2 gibt. Es scheint, dass es erstellt wurde, weil die Commons-Protokollierung schwierig zu verwenden ist, sodass SLF4J nicht verwendet werden kann Wenn Sie keinen Grund haben, scheint es gut, dies zu verwenden.

Erforderliche JAR

API (erforderlich): slf4j-api- \ * .jar Hinding zur Protokollierung der Implementierung (eine davon) Log4j:slf4j-log4j12-*.jar Log4j2:log4j-slf4j-impl-*.jar Logback:logback-classic-*.jar java.util.logging:slf4j-jdk14-*.jar

Adapter, Brücke

jcl ist Jakarta Commons Logging jul ist java.util.logging Abkürzung für.

Referenzseite

https://www.nextdoorwith.info/wp/se/slf4j/

Commons Logging

JBoss Logging

Protokollausgabebibliothek

java.util.logging

Log4j Aus Unterstützung. Es ist besser, log4j2 zu verwenden.

Installation

<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
    <groupId>log4j</groupId>
    <artifactId>log4j</artifactId>
    <version>1.2.17</version>
</dependency>

Einstellungsdatei

log4j.properties


### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d %5p %c{1} - %m%n

### direct messages to file mylog.log ###
log4j.appender.file=org.apache.log4j.FileAppender
log4j.appender.file.File=log/log4j.log
log4j.appender.file.Append=true
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d %5p %c{1} - %m%n

log4j.rootLogger=debug, stdout, file

Informationen zum Conversion-Muster -Klassenname: "% C". Der Paketname kann mit "% C {1}" weggelassen werden. -Methodenname% M. ・ Prozess-ID wird nicht unterstützt ・ Thread-ID wird nicht unterstützt

Teilen Sie die Protokolldatei in mehrere Dateien

log4j.properties



### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target=System.out
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%C{1} %M %t %d %5p %c{1} - %m%n

### direct messages to file mylog.log ###
log4j.appender.file1=org.apache.log4j.FileAppender
log4j.appender.file1.File=log/log4j1.log
log4j.appender.file1.Append=true
log4j.appender.file1.layout=org.apache.log4j.PatternLayout
log4j.appender.file1.layout.ConversionPattern=%d %5p %c{1} - %m%n
### direct messages to file mylog.log ###
log4j.appender.file2=org.apache.log4j.FileAppender
log4j.appender.file2.File=log/log4j2.log
log4j.appender.file2.Append=true
log4j.appender.file2.layout=org.apache.log4j.PatternLayout
log4j.appender.file2.layout.ConversionPattern=%d %5p %c{1} - %m%n

#
log4j.logger.kero.domain=debug, file1
log4j.logger.kero.view=debug, file2
log4j.logger.kero.infrastructure=debug, file2
log4j.rootLogger=debug, stdout

Log4j2

Installation

		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-api</artifactId>
			<version>2.9.1</version>
		</dependency>
		<dependency>
			<groupId>org.apache.logging.log4j</groupId>
			<artifactId>log4j-core</artifactId>
			<version>2.9.1</version>
		</dependency>

Einstellungsdatei

log4j2.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration>
<Configuration status="OFF">
	<Properties>
		<Property name="ptn">%d{yyyy-MM-dd HH:mm:ss.SSS} p=%-5p c=%c t=%t C=%C F=%F M=%M L=%L m=%m %n</Property>
	</Properties>
	<Appenders>
		<Console name="console" target="SYSTEM_OUT">
			<PatternLayout pattern="${ptn}" />
		</Console>
		<RollingFile name="file" fileName="log/log4j2.log"
			filePattern="log/%d{yyyyMM}/log4j2_%d{yyyyMMdd}_%i.log">
			<PatternLayout pattern="${ptn}" />
			<Policies>
				<OnStartupTriggeringPolicy />
				<SizeBasedTriggeringPolicy size="2 MB" />
				<TimeBasedTriggeringPolicy />
			</Policies>
			<DefaultRolloverStrategy max="10" />
		</RollingFile>
	</Appenders>
	<Loggers>
		<Root level="all">
			<AppenderRef ref="console" />
			<AppenderRef ref="file" />
		</Root>
	</Loggers>
</Configuration>

Quelle

package ml.kerotori.log4j;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public class Test1 {
	static Logger logger = LogManager.getLogger(Test1.class);

	public static void main(String[] args) {
		logger.trace("Test1 Hauptmethode");
	}
}

Logback

Installation

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

	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-classic</artifactId>
		<version>1.1.3</version>
	</dependency>

	<dependency>
		<groupId>ch.qos.logback</groupId>
		<artifactId>logback-core</artifactId>
		<version>1.1.3</version>
	</dependency>

Einstellungsdatei

logback.xml


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE logback>
<configuration>
    <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>%date{yyyy-MM-dd HH:mm:ss} [%thread] %level %logger{0} - %msg \(%file:%line\)%n</pattern>
        </encoder>
        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
            <level>DEBUG</level>
        </filter>
    </appender>

    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <file>logs/logback.log</file>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>logs/app.%d{yyyy-MM-dd}.log.tar.gz</fileNamePattern>
            <maxHistory>7</maxHistory>
        </rollingPolicy>
        <encoder>
            <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} - %m%n</pattern>
        </encoder>
    </appender>

    <root level="DEBUG" additivity="false">
        <appender-ref ref="STDOUT" />
        <appender-ref ref="FILE" />
    </root>

</configuration>

Quelle


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

public class Test2 {
	private static Logger log = LoggerFactory.getLogger("Test2");
	public static void main(String[] args) {
		 log.debug("Test2 Hauptmethode");
	}

}

Referenz

Ein weicher Überblick über den Verlauf und den aktuellen Status von Java-Protokollierungsbibliotheken (für Anfänger) https://qiita.com/nisshiee/items/c5388f1d472ec86295e0

Recommended Posts

Informationen zur Java-Protokollausgabe
Beispiel für eine Java-Standardprotokollausgabe
Protokollausgabe in Datei in Java
[Java] Ausgabe, Variablen
Über die Java-Schnittstelle
[Java] Informationen zu Java 12-Funktionen
[Java] Über Arrays
Etwas über Java
Wo ist mit Java?
Informationen zu Java-Funktionen
Über Java-Threads
[Java] -Schnittstelle
Über die Java-Klasse
Informationen zu Java-Arrays
[Ausgabe] Über jeden
Über Java-Vererbung
Über Schnittstelle, Java-Schnittstelle
Über Java Var
Über Java Literal
Informationen zu Java-Befehlen
Ausgabe über die Methode, Teil 2
Informationen zur Java-Funktionsschnittstelle
Java, über zweidimensionales Array
Über die Klassenteilung (Java)
Java-formatierte Ausgabe [Hinweis]
Über [Java] [StreamAPI] allMatch ()
Informationen zur Java StringBuilder-Klasse
Versuchen Sie, etwa 30 Zeilen in Java zu kratzen (CSV-Ausgabe)
[Java] Über Singleton Class
Informationen zur Bindung von Java-Methoden
[Java] Über anonyme Klassen
Informationen zu Aufteilungsmethoden (Java)
[Java] GlassFish 5-Fehlerbehebungsdatensatz
[Java Silver] Informationen zur Initialisierung
Informationen zur Java-Array-Liste
Über Java-Polymorphismus super ()
Beispiel für die Ausgabe eines Parameterprotokollprotokolls Java & Spring MVC
Informationen zur Vererbung (Java Silver)
Informationen zur Java String-Klasse
Informationen zu Java-Zugriffsmodifikatoren
Über Java-Lambda-Ausdrücke
Informationen zu Java-Einstiegspunkten
Java 10 Docker-Unterstützung
Persönliche Zusammenfassung über Java
[Ausgabe] Informationen zur Datenbank
Über die abstrakte Klasse von Java
Beispielcode für die Protokollausgabe von Java + SLF4J + Logback
Hinweise zu Java GC
Was ich über Java 8 recherchiert habe
Über Java-Instanzen
Was ich über Java 6 recherchiert habe
Ausgabe über die Methode Teil 1
[Gradle] Informationen zu Java-Plug-In-Aufgaben
Informationen zu Java-Variablendeklarationsanweisungen
Was ich über Java 9 recherchiert habe
[Java] Informationen zur Behandlung von Try-Catch-Ausnahmen
Informationen zu Java Class Loader-Typen
[Java Silver] Über gleich Methode