Es sieht so aus, als ob diese Frage schon oft gestellt wurde. Aber alle Lösungen, die ich ausprobiert habe (meistens sicher, dass sich die Datei log4j.properties am richtigen Ort befindet und korrekt eingegeben wurde) funktionieren in meinem Fall nicht.log4j: WARN Es konnten keine Appender für den Logger gefunden werden - Verwenden von slf4j-log4j12
Ich habe ein Maven-Projekt. Ich möchte Log4j für meine Tests verwenden. Die Testklasse verwendet eine in src/main/java definierte Hilfsmethode, in der der Logger verwendet wird.
In meiner Hilfsklasse (in src/main/java /) Ich habe
importiertimport org.slf4j.Logger;
import org.slf4j.LoggerFactory;
und ich habe den Logger instanziiert
private static final String TAG = Helper.class.getSimpleName();
private static final Logger logger = LoggerFactory.getLogger(TAG);
ich eingeschlossen habe sowohl in src/main/Ressourcen und src/test/resources folgende log4j.properties
### set log levels - for more verbose logging change 'info' to 'debug' ###
### Also add logfile to the root, if need stdout then add stdout appender here###
log4j.rootLogger=debug, stdout
### direct log messages to stdout ###
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{dd-mm HH:mm:ss,SSS} %p/%c{1}:%L - %m%n
In meinem POM-Datei habe ich die Abhängigkeit von slf4j enthalten
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</dependency>
Im Code in meiner Hilfsklasse verwende ich den Logger auf diese Weise
logger.debug("logger test...");
Keine Nachrichten in der Konsole ausgegeben werden und ich erhalte die folgende Warnmeldung
log4j:WARN No appenders could be found for logger (Helper).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Was Vermisse ich?
aktualisieren
Die Frage nach einer Projektoption verwandt war, der die log4j.configuration Eigenschaft auf log4j-test.xml setzt. Ich habe das folgende Plugin zum Projekt maven pom hinzugefügt und das Problem behoben.
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.14.1</version>
<configuration>
<systemPropertyVariables>
<log4j.configuration>log4j.properties</log4j.configuration>
</systemPropertyVariables>
</configuration>
</plugin>
Add '-Dlog4j.debug' zu den JVM-Argumenten, um genau zu sehen, welche Konfigurationsdatei log4j aufnimmt –