À propos de la sortie du journal Java

Bibliothèque de façades en rondins

Le java.util.logging standard a été créé après log4j, mais il n'était pas complètement populaire car log4j était facile à utiliser. Par conséquent, une interface qui ne dépend pas de la bibliothèque de journaux était requise. Si la bibliothèque de journaux est différente pour chaque bibliothèque, il sera difficile de combiner les journaux en un seul fichier, il est donc préférable d'utiliser SLF4J.

SLF4J(Simple Logging Facade For Java) Il semble qu'il existe de nombreuses configurations de SLF4J + logback ou SLF4J + Log4j2. Il semble qu'il a été créé parce que Commons Logging est difficile à utiliser, donc SLF4J ne peut pas être utilisé Si vous n'avez pas de raison, il semble bon de l'utiliser.

JAR requis

API (obligatoire): slf4j-api- \ * .jar Obligation de consigner l'implémentation (l'un d'eux) Log4j:slf4j-log4j12-*.jar Log4j2:log4j-slf4j-impl-*.jar Logback:logback-classic-*.jar java.util.logging:slf4j-jdk14-*.jar

Adaptateur, pont

jcl est la journalisation de Jakarta Commons jul est java.util.logging Abréviation de.

Site de référence

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

Commons Logging

JBoss Logging

Bibliothèque de sortie de journal

java.util.logging

Log4j Hors de support. Il est préférable d'utiliser log4j2.

Installation

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

fichier de configuration

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

À propos du modèle de conversion -Nom de classe: "% C". Le nom du package peut être omis en utilisant "% C {1}". -Nom de la méthode% M ・ L'ID de processus n'est pas pris en charge ・ L'ID de fil n'est pas pris en charge

Divisez le fichier journal en plusieurs fichiers

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>

fichier de configuration

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>

La source

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("Méthode principale Test1");
	}
}

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>

fichier de configuration

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>

La source


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("Méthode principale Test2");
	}

}

référence

Une compréhension douce de l'historique et de l'état actuel des bibliothèques de journalisation Java (pour les débutants) https://qiita.com/nisshiee/items/c5388f1d472ec86295e0

Recommended Posts

À propos de la sortie du journal Java
Exemple de sortie de journal standard Java
Enregistrer la sortie dans un fichier en Java
[Java] sortie, variables
À propos de l'interface Java
[Java] À propos des fonctionnalités de Java 12
[Java] À propos des tableaux
Quelque chose à propos de java
Où est Java
À propos des fonctionnalités Java
À propos des threads Java
Interface [Java]
À propos de la classe Java
À propos des tableaux Java
[Sortie] À propos de chaque
À propos de l'héritage Java
À propos de l'interface, interface java
À propos de Java Var
À propos de Java Literal
À propos des commandes Java
Sortie sur la méthode, partie 2
À propos de l'interface fonctionnelle Java
Java, à propos d'un tableau à deux dimensions
À propos de la division de classe (Java)
Sortie au format Java [Note]
À propos de [Java] [StreamAPI] allMatch ()
À propos de la classe Java StringBuilder
Essayez de gratter environ 30 lignes en Java (sortie CSV)
[Java] À propos de la classe Singleton
À propos de la liaison de méthode Java
[Java] À propos des classes anonymes
A propos des méthodes de fractionnement (Java)
[Java] Enregistrement de dépannage GlassFish 5
[Java Silver] À propos de l'initialisation
A propos de la liste des baies Java
À propos du polymorphisme Java Super ()
Demander un exemple de sortie du journal des paramètres Java et Spring MVC
À propos de l'héritage (Java Silver)
À propos de la classe Java String
À propos des modificateurs d'accès Java
À propos des expressions Java lambda
À propos des points d'entrée Java
Prise en charge de Java 10 Docker
Résumé personnel sur Java
Tout sur la programmation Java
[Sortie] À propos de la base de données
À propos de la classe abstraite de Java
Exemple de code pour la sortie du journal par Java + SLF4J + Logback
Remarques sur Java GC
Ce que j'ai recherché sur Java 8
À propos des instances Java
Ce que j'ai recherché sur Java 6
Sortie sur la méthode Partie 1
[Gradle] À propos des tâches du plug-in Java
À propos des instructions de déclaration de variable Java
Ce que j'ai recherché sur Java 9
[Java] À propos de la gestion des exceptions try-catch
À propos des types de chargeur de classe Java
[Java Silver] À propos de la méthode equals