2012-05-28 9 views
6

Update - dieses Problem war von mir selbst.Finden von log4j.properties in IDEA

In einer bestimmten Phase hatte diese bestimmte Testklasse einen Test, um sicherzustellen, dass etwas protokolliert wurde. Im Setup hatte ich zuvor alle Appender entfernt und meinen eigenen Appender hinzugefügt, um Test-Testzeiten zu erstellen. Dieser Test ist längst vorbei, aber dieses Nugget blieb im Setup: Logger.getRootLogger().removeAllAppenders();.

Entschuldigung für den Fehlalarm. :)


In IDEA habe ich den folgenden Test:

@Test 
public void shouldLog() { 
    URL resource = Thread.currentThread().getContextClassLoader() 
     .getResource("log4j.properties"); 
    System.out.println("resource = " + resource); 
    final Logger logger = Logger.getLogger(getClass()); 
    logger.info("Hello world"); 
} 

Es gibt so:

"C:\Program Files\Java\jdk1.5.0_18\bin\java" -classpath "C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 11.1\lib\idea_rt.jar" -ea -Dfile.encoding=UTF-8 com.intellij.rt.execution.CommandLineWrapper C:\DOCUME~1\JMAWSO~1.NT3\LOCALS~1\Temp\classpath2294205410661538428.tmp @vm_params C:\DOCUME~1\JMAWSO~1.NT3\LOCALS~1\Temp\vm_params5645362020129462784.tmp com.intellij.rt.execution.application.AppMain com.intellij.rt.execution.junit.JUnitStarter -ideVersion5 au.com.gmm.repo.RepoThreadCleanupServiceTest,shouldLog 
resource = file:/C:/user/jem/projects/GMM/out/test/cashflow/log4j.properties 
log4j:WARN No appenders could be found for logger (au.com.gmm.repo.RepoThreadCleanupServiceTest). 
log4j:WARN Please initialize the log4j system properly. 
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Process finished with exit code 0 

Dies ist ein bekanntes Problem, von vielen Neulingen gesehen immer und immer wieder. Ich fühle mich ein bisschen albern, wenn ich heute darüber stolpere.

http://logging.apache.org/log4j/1.2/faq.html#noconfig sagt log4j uses Thread.getContextClassLoader().getResource() to locate the default configuration files. Mein Test überprüft jedoch Thread.currentThread().getContextClassLoader().getResource("log4j.properties") und findet die Eigenschaftendatei ohne Probleme.

Der Inhalt der Datei ist:

log4j.rootLogger=DEBUG, CONSOLE 
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender 
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout 
log4j.appender.CONSOLE.layout.ConversionPattern=%d{HH:mm:ss.SSS} %c - %m%n 

Antwort

6

ich mit slf4j in IntelliJ IDEA bin mit log4j und es funktioniert perfekt für mich. Nur sind diese Gläser in Ihre Anwendungsabhängigkeiten in IntelliJ:

log4j-1.2.9.jar 
slf4j-api-1.5.11.jar 
slf4j-log4j12-1.5.11.jar 

als die log4j Konfiguration irgendwo in Ihrer Anwendung setzen. Aber vergessen Sie nicht, dass die Lage der log4j.properties in IntelliJ als Quellen zu markieren, oder wenn Sie es auf Tests als Test-Quellen verwenden:

log4j.properties:

log4j.rootLogger=INFO,stdout 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} - %m%n 

log4j.logger.your.app=DEBUG,yourApp 
log4j.additivity.your.app=false 
log4j.logger.yourApp=DEBUG,yourApp 
log4j.additivity.yourApp=false 
log4j.appender.yourApp=org.apache.log4j.ConsoleAppender 
log4j.appender.yourApp.layout=org.apache.log4j.PatternLayout 
log4j.appender.yourApp.layout.ConversionPattern=%d [%t] %-5p %X{file} %c{1} %m%n 
log4j.appender.yourApp.ImmediateFlush=true 

dann in Ihrer Java-Klasse Verwendung dieses den Logger zu bekommen:

private static final Logger LOGGER = LoggerFactory.getLogger(YourApp.class); 

Und Sie werden keine Warnungen wie sehen: No appenders could be found for logger.

Hoffe, das hilft.

+1

Vielen Dank für Ihre Antwort. Leider hilft es nicht. – Synesso

+0

Hoppla, das Problem war meine eigene Schuld. Siehe aktualisierte Frage. Die richtige Antwort wird vergeben, obwohl slf4j nicht notwendig ist und Sie könnten diese log4j.properties ein wenig verkleinern. – Synesso

+0

Danke, es als "Quelle" markiert behoben mein Problem! \O/ – koenmetsu

Verwandte Themen