Comment initialiser log4j correctement?

Après avoir ajouté log4j à mon application, j’obtiens la sortie suivante chaque fois que j’exécute mon application:

 log4j: WARN Aucun auteur n'a été trouvé pour Logger (slideselector.facedata.FaceDataParser).
 log4j: WARN Veuillez initialiser correctement le système log4j.

Il semble que cela signifie qu’un fichier de configuration est manquant. Où se trouve ce fichier de configuration et qu’est-ce qu’un bon contenu de démarrage?

J’utilise java simple pour développer une application de bureau. Donc pas de serveur web etc …

Log4j recherche par défaut un fichier appelé log4j.properties ou log4j.xml sur le chemin de classe. Vous pouvez contrôler le fichier qu’il utilise pour s’initialiser en définissant les propriétés du système comme décrit ici (Recherchez la section “Procédure d’initialisation par défaut”).

Par exemple:

java -Dlog4j.configuration=customName .... 

Log4j va chercher un fichier appelé customName sur le classpath.

Si vous rencontrez des problèmes, je trouve utile d’activer log4j.debug:

 -Dlog4j.debug 

Il imprimera sur System.out de nombreuses informations utiles sur le fichier utilisé pour l’initialiser, sur les enregistreurs / appender configurés et comment etc.

Le fichier de configuration peut être un fichier de propriétés Java ou un fichier XML. Voici un exemple du format de fichier de propriétés extrait de la page de documentation de log4j intro :

 log4j.rootLogger=debug, stdout, R log4j.appender.stdout=org.apache.log4j.ConsoleAppender log4j.appender.stdout.layout=org.apache.log4j.PatternLayout # Pattern to output the caller's file name and line number. log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender log4j.appender.R.File=example.log log4j.appender.R.MaxFileSize=100KB # Keep one backup file log4j.appender.R.MaxBackupIndex=1 log4j.appender.R.layout=org.apache.log4j.PatternLayout log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n 

Bien que la configuration correcte de log4j soit idéale pour les “vrais” projets, vous pouvez vouloir une solution rapide, par exemple si vous testez une nouvelle bibliothèque.

Si oui, un appel à la méthode statique

 org.apache.log4j.BasicConfigurator.configure(); 

configurera la connexion de base à la console et les messages d’erreur disparaîtront.

Si vous vous débarrassez de tout (par exemple si vous êtes en test)

 org.apache.log4j.BasicConfigurator.configure(new NullAppender()); 

Selon la page FAQ d’Apache Log4j :

Pourquoi est-ce que je vois un avertissement au sujet de “Aucun auteur trouvé pour Logger” et “Veuillez configurer correctement Log4j”?

Cela se produit lorsque les fichiers de configuration par défaut log4j.properties et log4j.xml sont introuvables et que l’application n’exécute aucune configuration explicite. log4j utilise Thread.getContextClassLoader().getResource() pour localiser les fichiers de configuration par défaut et ne vérifie pas directement le système de fichiers. Connaître l’emplacement approprié pour placer log4j.properties ou log4j.xml nécessite de comprendre la stratégie de recherche du chargeur de classes utilisé. log4j ne fournit pas de configuration par défaut car la sortie sur la console ou sur le système de fichiers peut être interdite dans certains environnements.

À la base, l’avertissement Aucun enregistreur ne peut être trouvé pour le logger signifie que vous utilisez le système de journalisation log4j , mais vous n’avez ajouté aucun appendice (tel que FileAppender, ConsoleAppender, SocketAppender, SyslogAppender, etc.) dans votre fichier de configuration est manquant.

Il existe trois façons de configurer log4j: avec un fichier de propriétés ( log4j.properties ), avec un fichier XML et via du code Java ( rootLogger.addAppender(new NullAppender()); ).

log4j.properties

Si vous avez un fichier de propriétés (par exemple lors de l’installation de Solr), vous devez placer ce fichier dans votre répertoire classpath .

chemin de classe

Voici quelques suggestions de commandes sous Linux: déterminer votre valeur de classpath:

 $ echo $CLASSPATH $ ps wuax | grep -i classpath $ grep -Ri classpath /etc/tomcat? /var/lib/tomcat?/conf /usr/share/tomcat? 

ou de Java: System.getProperty("java.class.path") .

Log4j XML

Vous trouverez ci-dessous un fichier de configuration XML de base pour log4j au format XML:

 < ?xml version="1.0" encoding="UTF-8" ?> < !DOCTYPE log4j:configuration SYSTEM "log4j.dtd">             

Matou

Si vous utilisez Tomcat, vous pouvez placer votre log4j.properties dans le log4j.properties /usr/share/tomcat?/lib/ ou /var/lib/tomcat?/webapps/*/WEB-INF/lib/ .

Solr

Pour la référence, le fichier log4j.properties par défaut de Solr ressemble à log4j.properties :

 # Logging level solr.log=logs/ log4j.rootLogger=INFO, file, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n #- size rotation with log cleanup. log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.MaxFileSize=4MB log4j.appender.file.MaxBackupIndex=9 #- File to log to and log format log4j.appender.file.File=${solr.log}/solr.log log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n log4j.logger.org.apache.zookeeper=WARN log4j.logger.org.apache.hadoop=WARN # set to INFO to enable infostream log messages log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF 

Pourquoi log4j ne peut-il pas trouver mon fichier de propriétés dans une application J2EE ou WAR?

La réponse courte: les classes log4j et le fichier de propriétés ne sont pas dans la scope du même chargeur de classes.

Log4j utilise uniquement le mécanisme Class.forName() par défaut pour le chargement des classes. Les ressources sont traitées de la même manière. Consultez la documentation de java.lang.ClassLoader pour plus de détails.

Donc, si vous rencontrez des problèmes, essayez de charger la classe ou la ressource vous-même. Si vous ne le trouvez pas, log4j non plus. 😉


Voir également:

  • Brève introduction à log4j sur le site Apache
  • Apache: Logging Services: FAQ sur le site Apache

Recherchez un fichier log4j.properties ou log4j.xml en ligne contenant un appender racine et placez-le sur votre chemin de classe.

 ### 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.SimpleLayout log4j.rootLogger=debug, stdout 

se connectera à la console. Je préfère me connecter à un fichier pour pouvoir enquêter ultérieurement.

 log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.maxFileSize=100KB log4j.appender.file.maxBackupIndex=5 log4j.appender.file.File=test.log log4j.appender.file.threshold=debug log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug,file 

bien que pour les applications de journalisation prolixe, 100 Ko doivent généralement être augmentés à 1 Mo ou 10 Mo, en particulier pour le débogage.

Personnellement, je configure plusieurs enregistreurs et configure le consignateur racine pour avertir ou le niveau d’erreur au lieu du débogage.

Vous pouvez définir l’emplacement de votre fichier log4j.properties à partir de votre application Java en utilisant:

 org.apache.log4j.PropertyConfigurator.configure(file/location/log4j.properties) 

Plus d’informations sont disponibles ici: https://logging.apache.org/log4j/1.2/manual.html

Une autre façon de le faire sans mettre le fichier de propriétés sur le classpath consiste à définir directement la propriété à partir du code Java. Voici l exemple de code.

 public class Log4JSample { public static void main(Ssortingng[] args) { Properties properties=new Properties(); properties.setProperty("log4j.rootLogger","TRACE,stdout,MyFile"); properties.setProperty("log4j.rootCategory","TRACE"); properties.setProperty("log4j.appender.stdout", "org.apache.log4j.ConsoleAppender"); properties.setProperty("log4j.appender.stdout.layout", "org.apache.log4j.PatternLayout"); properties.setProperty("log4j.appender.stdout.layout.ConversionPattern","%d{yyyy/MM/dd HH:mm:ss.SSS} [%5p] %t (%F) - %m%n"); properties.setProperty("log4j.appender.MyFile", "org.apache.log4j.RollingFileAppender"); properties.setProperty("log4j.appender.MyFile.File", "my_example.log"); properties.setProperty("log4j.appender.MyFile.MaxFileSize", "100KB"); properties.setProperty("log4j.appender.MyFile.MaxBackupIndex", "1"); properties.setProperty("log4j.appender.MyFile.layout", "org.apache.log4j.PatternLayout"); properties.setProperty("log4j.appender.MyFile.layout.ConversionPattern","%d{yyyy/MM/dd HH:mm:ss.SSS} [%5p] %t (%F) - %m%n"); PropertyConfigurator.configure(properties); Logger logger = Logger.getLogger("MyFile"); logger.fatal("This is a FATAL message."); logger.error("This is an ERROR message."); logger.warn("This is a WARN message."); logger.info("This is an INFO message."); logger.debug("This is a DEBUG message."); logger.trace("This is a TRACE message."); } 

}

Vous pouvez configurer le niveau de journalisation en utilisant setLevel () .

Les niveaux sont utiles pour définir facilement le type d’informations que vous souhaitez que le programme affiche.

Par exemple:

 Logger.getRootLogger().setLevel(Level.WARN); //will not show debug messages 

L’ensemble des niveaux possibles sont:

TRACE,

DÉBOGUER,

INFO,

PRÉVENIR,

ERREUR et

FATAL

Selon le manuel Logging Services

 import org.apache.log4j.BasicConfigurator; 

Appelez cette méthode

 BasicConfigurator.configure(); 

Pour activer -Dlog4j.debug , accédez à Système, Paramètres système avancés, Variables d’environnement et définissez la variable système _JAVA_OPTIONS à -Dlog4j.debug .

Dans quoi développez-vous? Utilisez-vous Apache Tomcat?

 log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.target=System.out log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{yyyyMMdd HH:mm:ss.SSS} [[%5p] %c{1} [%t]] %m%n 

J’ai une propriété comme celle-ci dans une application Java.

Mon log4j a été corrigé par le fichier de propriétés ci-dessous:

 ## 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.SimpleLayout log4j.rootLogger=debug, stdout log4j.appender.file=org.apache.log4j.RollingFileAppender log4j.appender.file.maxFileSize=100KB log4j.appender.file.maxBackupIndex=5 log4j.appender.file.File=./logs/test.log log4j.appender.file.threshold=debug log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n log4j.rootLogger=debug,file 

J’ai créé le fichier log4j.properties dans le dossier resources à côté du fichier hibernate.cfg.xml et l’ai rempli avec le texte ci-dessous:

 log4j.rootLogger=INFO, CONSOLE log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout log4j.appender.CONSOLE.layout.ConversionPattern=%d{ABSOLUTE} %-5p [%c{1}:%L] %m%n 

maintenant je me suis débarrassé des avertissements et des erreurs

Créez simplement log4j.properties sous le dossier src / main / assembly. Selon si vous voulez que les messages de journal soient affichés dans la console ou dans le fichier, vous modifiez votre fichier. Ce qui suit va montrer vos messages dans la console.

 # Root logger option log4j.rootLogger=INFO, stdout # 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{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n 

Comme expliqué précédemment, il existe deux approches

La première consiste à append cette ligne à votre méthode principale:

 BasicConfigurator.configure(); 

La deuxième approche consiste à append ce fichier log4j.properties standard à votre chemin de classe:

Lors de la seconde approche, vous devez vous assurer d’initialiser correctement le fichier.

Par exemple.

 Properties props = new Properties(); props.load(new FileInputStream("log4j property file path")); props.setProperty("log4j.appender.File.File", "Folder where you want to store log files/" + "File Name"); 

Assurez-vous de créer le dossier requirejs pour stocker les fichiers journaux.

Essayez de définir l’atsortingbut de débogage dans le noeud log4j: configuration sur true.

  

Il imprime des informations lorsque le fichier de configuration est lu et utilisé pour configurer l’environnement log4j. Vous pourriez avoir plus de détails pour résoudre votre problème.

API de journalisationL’API de journalisation Java facilite la maintenance et la maintenance des logiciels sur les sites clients en produisant des rapports de journal pouvant être analysés par les utilisateurs finaux, les administrateurs système, les ingénieurs de maintenance et les équipes de développement logiciel. Les API de journalisation capturent des informations telles que les défaillances de sécurité, les erreurs de configuration, les goulots d’étranglement des performances et / ou les bogues dans l’application ou la plate-forme. Le package de base inclut la prise en charge de la transmission des enregistrements de journal au format texte ou XML à la mémoire, aux stream de sortie, aux consoles, aux fichiers et aux sockets. En outre, les API de journalisation peuvent interagir avec les services de journalisation existants sur le système d’exploitation hôte.

Package java.util.logging «Fournit les classes et les interfaces des principales fonctions de journalisation de la plate-forme Java.


Log4j 1.x «log4j est un utilitaire de journalisation Java populaire. Log4j est un projet open source basé sur le travail de nombreux auteurs. Il permet au développeur de contrôler quelles instructions de journal sont générées à divers emplacements en utilisant des appendices [console, fichiers, firebase database et messagerie électronique]. Il est entièrement configurable à l’exécution en utilisant des fichiers de configuration externes.

Log4j a trois composants principaux:

  • Enregistreurs – [OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE]
  • Les annexes

    • Apache Commons Logging: ConsoleAppender, FileAppender, RollingFileAppender, DailyRollingFileAppender, Driver JDBCAppender , SocketAppender

    • Log4J Appender pour MongoDB: MongoDbAppender – Driver

  • Dispositions – [PatternLayout, EnhancedPatternLayout]

Les fichiers de configuration peuvent être écrits au format XML ou Java (clé = valeur).

  1. log4j_External.properties «Format des propriétés Java (clé = valeur)

La chaîne entre une ouverture ” $ { ” et la fermeture ” } ” est interprétée comme une clé. La valeur de la variable substituée peut être définie en tant que propriété système ou dans le fichier de configuration lui-même. Définissez les options spécifiques à l’appender. «Log4j.appender.appenderName.option = valeur, pour chaque appender nommé, vous pouvez configurer sa mise en page.

 log4j.rootLogger=INFO, FILE, FILE_PER_SIZE, FILE_PER_DAY, CONSOLE, MySql #log.path=./ log.path=E:/Logs # https://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/PatternLayout.html # {%-5p - [WARN ,INFO ,ERROR], %5p 0- [ WARN, INFO,ERROR]} log.patternLayout=org.apache.log4j.PatternLayout log.pattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n # System.out | System.err log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender log4j.appender.CONSOLE.Target=System.err log4j.appender.CONSOLE.layout=${log.patternLayout} log4j.appender.CONSOLE.layout.ConversionPattern=${log.pattern} # File Appender log4j.appender.FILE=org.apache.log4j.FileAppender log4j.appender.FILE.File=${log.path}/logFile.log #log4j:ERROR setFile(null,false) call failed. - Defaults setFile(null,true) #log4j.appender.FILE.Append = false log4j.appender.FILE.layout=${log.patternLayout} log4j.appender.FILE.layout.ConversionPattern=${log.pattern} # BackUP files for every Day. log4j.appender.FILE_PER_DAY=org.apache.log4j.DailyRollingFileAppender # [[ Current File ] - logRollingDayFile.log ], { [BackUPs] logRollingDayFile.log_2017-12-10, ... } log4j.appender.FILE_PER_DAY.File=${log.path}/logRollingDayFile.log log4j.appender.FILE_PER_DAY.DatePattern='_'yyyy-MM-dd log4j.appender.FILE_PER_DAY.layout=${log.patternLayout} log4j.appender.FILE_PER_DAY.layout.ConversionPattern=${log.pattern} # BackUP files for size rotation with log cleanup. log4j.appender.FILE_PER_SIZE=org.apache.log4j.RollingFileAppender # [[ Current File ] - logRollingFile.log ], { [BackUPs] logRollingFile.log.1, logRollingFile.log.2} log4j.appender.FILE_PER_SIZE.File=${log.path}/logRollingFile.log log4j.appender.FILE_PER_SIZE.MaxFileSize=100KB log4j.appender.FILE_PER_SIZE.MaxBackupIndex=2 log4j.appender.FILE_PER_SIZE.layout=${log.patternLayout} log4j.appender.FILE_PER_SIZE.layout.ConversionPattern=${log.pattern} # MySql Database - JDBCAppender log4j.appender.MySql=org.apache.log4j.jdbc.JDBCAppender log4j.appender.MySql.driver=com.mysql.jdbc.Driver log4j.appender.MySql.URL=jdbc:mysql://localhost:3306/automationlab log4j.appender.MySql.user=root log4j.appender.MySql.password= log4j.appender.MySql.layout=org.apache.log4j.EnhancedPatternLayout log4j.appender.MySql.layout.ConversionPattern=INSERT INTO `logdata` VALUES ('%p', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%M', '%L', '%m'); #log4j.appender.MySql.sql=INSERT INTO `logdata` VALUES ('%p', '%d{yyyy-MM-dd HH:mm:ss}', '%C', '%M', '%L', '%m'); # Direct log events[Messages] to MongoDB Collection - MongoDbAppender log.mongoDB.hostname=loalhost log.mongoDB.userName=Yash777 log.mongoDB.password=Yash@123 log.mongoDB.DB=MyLogDB log.mongoDB.Collection=Logs log4j.appender.MongoDB=org.log4mongo.MongoDbAppender log4j.appender.MongoDB.hostname=${log.mongoDB.hostname} log4j.appender.MongoDB.userName=${log.mongoDB.userName} log4j.appender.MongoDB.password=${log.mongoDB.password} log4j.appender.MongoDB.port=27017 log4j.appender.MongoDB.databaseName=${log.mongoDB.DB} log4j.appender.MongoDB.collectionName=${log.mongoDB.Collection} log4j.appender.MongoDB.writeConcern=FSYNCED 

Structure de la table MySQL pour les données de table

 CREATE TABLE IF NOT EXISTS `logdata` ( `Logger_Level` varchar(5) COLLATE utf8_unicode_ci NOT NULL, `DataTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, `ClassName` varchar(30) COLLATE utf8_unicode_ci NOT NULL, `MethodName` varchar(50) COLLATE utf8_unicode_ci NOT NULL, `LineNumber` int(10) NOT NULL, `Message` text COLLATE utf8_unicode_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; 
  1. log4j_External.xml «XML log4j: configuration avec fichier DTD public
 < ?xml version="1.0" encoding="iso-8859-1"?> < !DOCTYPE log4j:configuration PUBLIC "-//APACHE//DTD LOG4J 1.2//EN" "http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/xml/doc-files/log4j.dtd">                                        

  1. Log4j Configuration à partir de l’URL dans le programme Java:

Afin de spécifier une configuration personnalisée avec un fichier externe, la classe utilisée doit implémenter l’ interface Configurator .

lorsque les fichiers de configuration par défaut “log4j.properties”, “log4j.xml” ne sont pas disponibles

  • Pour “log4j.properties”, vous pouvez utiliser la méthode PropertyConfigurator .configure (java.net.URL).
  • Pour “log4j.xml”, DOMConfigurator sera utilisé.
 public class LogFiles { // Define a static logger variable so that it references the Logger instance named "LogFiles". static final Logger log = Logger.getLogger( LogFiles.class ); @SuppressWarnings("deprecation") public static void main(Ssortingng[] args) { System.out.println("CONFIGURATION_FILE « "+LogManager.DEFAULT_CONFIGURATION_FILE); System.out.println("DEFAULT_XML_CONFIGURATION_FILE = 'log4j.xml' « Default access modifier"); Ssortingng fileName = //""; //"log4j_External.xml"; "log4j_External.properties"; Ssortingng configurationFile = System.getProperty("user.dir")+"/src/" + fileName; if( fileName.contains(".xml") ) { DOMConfigurator.configure( configurationFile ); log.info("Extension *.xml"); } else if ( fileName.contains(".properties") ) { PropertyConfigurator.configure( configurationFile ); log.info("Extension *.properties"); } else { DailyRollingFileAppender dailyRollingAppender = new DailyRollingFileAppender(); dailyRollingAppender.setFile("E:/Logs/logRollingDayFile.log"); dailyRollingAppender.setDatePattern("'_'yyyy-MM-dd"); PatternLayout layout = new PatternLayout(); layout.setConversionPattern( "%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS} %C{1}:%12.20M:%L - %m %n" ); dailyRollingAppender.setLayout(layout); dailyRollingAppender.activateOptions(); Logger rootLogger = Logger.getRootLogger(); rootLogger.setLevel(Level.DEBUG); rootLogger.addAppender(dailyRollingAppender); log.info("Configuring from Java Class."); } log.info("Console.Message."); method2(); methodException(0); } static void method2() { log.info("method2 - Console.Message."); } static void methodException(int b) { try { int a = 10/b; System.out.println("Result : "+ a); log.info("Result : "+ a); } catch (Exception ex) { // ArithmeticException: / by zero log.error(Ssortingng.format("\n\tException occurred: %s", stackTraceToSsortingng(ex))); } } public static Ssortingng stackTraceToSsortingng(Exception ex) { SsortingngWriter sw = new SsortingngWriter(); PrintWriter pw = new PrintWriter(sw); ex.printStackTrace(pw); return sw.toSsortingng(); } } 

Si nous utilisons le journal de journalisation apache commons au-dessus de log4j, nous devons avoir les deux fichiers JAR disponibles dans classpath. De plus, commons-logging.properties et log4j.properties/xml doivent être disponibles dans classpath.

Nous pouvons également transmettre la classe d’implémentation et le nom log4j.properties tant que JAVA_OPTS l’aide de -Dorg.apache.commons.logging.Log= -Dlog4j.configuration= . La même chose peut être faite en définissant JAVA_OPTS dans le cas d’une application / serveur Web.

Cela aidera à externaliser les propriétés qui peuvent être modifiées lors du déploiement.

Ceci est une manière alternative en utilisant .yaml

Structure logique:

 Configuration: Properties: Appenders: Loggers: 

Échantillon:

 Configutation: name: Default Properties: Property: name: log-path value: "logs" Appenders: Console: name: Console_Appender target: SYSTEM_OUT PatternLayout: pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" File: name: File_Appender fileName: ${log-path}/logfile.log PatternLayout: pattern: "[%-5level] %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %c{1} - %msg%n" Loggers: Root: level: debug AppenderRef: - ref: Console_Appender Logger: - name: ...< ...> level: debug AppenderRef: - ref: File_Appender level: error 

Réf: LOG4J 2 CONFIGURATION: UTILISATION DE YAML

Pour les tests, une méthode rapide, y compris la définition du niveau de journalisation:

 org.apache.log4j.BasicConfigurator.configure(); Logger.getRootLogger().setLevel(Level.WARN); // set to Level.DEBUG for full, or Level.OFF..