L'exemple "Hello World" de SLF4J ne fonctionne pas pour moi. Je suppose que c'est parce que j'ai ajouté slf4j-log4 à mon chemin de classe. Dois-je configurer log4j directement pour que le monde bonjour fonctionne?
log4j:WARN No appenders could be found for logger (HelloWorld).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.Apache.org/log4j/1.2/faq.html#noconfig for more info.
Mise à jour : J'ai ajouté l'initialisation log4j, et cela ne fonctionne toujours pas:
public static void main(String[] params) {
org.Apache.log4j.Logger.getRootLogger().addAppender(new ConsoleAppender());
Logger logger = org.slf4j.LoggerFactory.getLogger(TestBase.class);
logger.info("Hello World");
}
Et je reçois:
log4j:ERROR No output stream or file set for the appender named [null].
Si vous souhaitez utiliser slf4j simple
, vous avez besoin de ces fichiers jar
sur votre chemin de classe:
Si vous souhaitez utiliser slf4j
et log4j
, vous avez besoin de ces fichiers jar
sur votre chemin de classe:
Ni plus ni moins. En utilisant slf4j simple
, vous obtiendrez une connexion de base à votre console au niveau INFO
ou supérieur. En utilisant log4j
, vous devez le configurer en conséquence .
Voici un exemple. Vous pouvez voir les détails http://jkssweetlife.com/configure-slf4j-working-various-logging-frameworks/ et télécharger les codes complets ici .
Ajoutez la dépendance suivante à votre pom si vous utilisez maven, sinon, téléchargez simplement les fichiers jar et mettez votre chemin de classe
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.7.7</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.7</version>
</dependency>
Configurer log4j.properties
log4j.rootLogger=TRACE, 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'T'HH:mm:ss.SSS} %-5p [%c] - %m%n
Exemple Java
public class Slf4jExample {
public static void main(String[] args) {
Logger logger = LoggerFactory.getLogger(Slf4jExample.class);
final String message = "Hello logging!";
logger.trace(message);
logger.debug(message);
logger.info(message);
logger.warn(message);
logger.error(message);
}
}
you need to add 3 dependency ( API+ API implementation + log4j dependency)
Add also this
<dependency>
<groupId>org.Apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.5</version>
</dependency>
# And to see log in command line , set log4j.properties
# Root logger option
log4j.rootLogger=INFO, file, 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
#And to see log in file , set log4j.properties
# Direct log messages to a log file
log4j.appender.file=org.Apache.log4j.RollingFileAppender
log4j.appender.file.File=./logs/logging.log
log4j.appender.file.MaxFileSize=10MB
log4j.appender.file.MaxBackupIndex=10
log4j.appender.file.layout=org.Apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
J'ai eu le même problème. J'ai appelé mon propre enregistreur personnalisé dans le fichier log4j.properties à partir du code lors de l'utilisation directe de l'api log4j. Si vous utilisez les appels api slf4j, vous utilisez probablement l'enregistreur racine par défaut, vous devez donc le configurer pour qu'il soit associé à un appender dans log4j.properties:
# Définissez le niveau de l'enregistreur racine sur DEBUG et son seul appender sur A1. Log4j.rootLogger = DEBUG, A1 # A1 est défini être un ConsoleAppender. log4j.appender.A1 = org.Apache.log4j.ConsoleAppender