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.
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
jcl est la journalisation de Jakarta Commons jul est java.util.logging Abréviation de.
https://www.nextdoorwith.info/wp/se/slf4j/
Commons Logging
JBoss Logging
java.util.logging
Log4j Hors de support. Il est préférable d'utiliser log4j2.
<!-- https://mvnrepository.com/artifact/log4j/log4j -->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.17</version>
</dependency>
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
<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>
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>
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
<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>
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>
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");
}
}
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