2011-12-02 10 views
6

Skonfigurowałem logowanie w mojej aplikacji Play Framework. Kiedy uruchamiam aplikację w trybie prod lub dev lub uruchamiam test przez comand (test odtwarzania) - wszystko działa dobrze, ale test nie może zostać wykonany, gdy uruchomię "automatyczny test odtwarzania". Proszę pomóż!Rejestracja konfiguracji w Play Framework podczas autotestu startowego

w application.conf:

application.log=INFO 
application.log.path=/log4j.xml 

log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="file" class="org.apache.log4j.RollingFileAppender"> 
     <param name="File" value="${application.path}/logs/application.log"/> 
     <param name="MaxFileSize" value="1MB"/> 
     <param name="MaxBackupIndex" value="100"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%d{ABSOLUTE} %-5p ~ %m %n"/> 
     </layout> 
    </appender> 
<logger name="play"> 
    <level value="error"/> 
</logger> 
<root> 
    <priority value="error"/> 
    <appender-ref ref="file"/> 
</root> 
</log4j:configuration> 

Gdy używam następujący plik log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%m%n"/> 
     </layout> 
    </appender> 
<logger name="play"> 
    <level value="debug"/> 
</logger> 
<root> 
    <priority value="info"/> 
    <appender-ref ref="console"/> 
</root> 
</log4j:configuration>  

testy uruchamiając komendę „Play autotest "pomyślnie wykonany. Opowiedz jak skonfigurować logowanie w Play (wyjście do pliku), które uruchamia się i wykonuje testy w "automatycznym testowaniu gry"!

Odpowiedz

1

Thi to gra! pluskwa. Nie wynika to z faktu, że log4j został skonfigurowany z osobnym plikiem, ale spowoduje to ukrycie innego komunikatu o błędzie: "play.tmp ma wartość null, gdy powinno być play.tmp = none" (coś podobnego - ty " Zdobędę to, jeśli usuniesz plik log4j.xml custon i ponownie uruchom "uruchom auto-test"). Problem polega na tym, że nawet jeśli ustawisz to na play.tmp = none, to nadal nie będzie działać. Poza tym, jeśli porównać ich dokumentacji online do Play „s wyjście konsoli będziesz już sobie sprawę, że coś jest nie tak:

Docs powiedzieć:

„W «! Auto-test» Polecenie to samo niż” testuj, ale automatycznie uruchamia przeglądarkę, uruchamia wszystkie testy i zatrzymuje. "

Konsola sais (kiedy to zrobić "play auto-test"):

ATTENTION: You're running Play! in DEV mode 
~ 
~ Go to http://localhost:9000/@tests to run the tests 
~ 
1

Odpowiedź była bardzo prosta

w application.conf:

%test.application.log=INFO 
%test.application.log.path=/log4j.xml 

application.log=INFO 
application.log.path=/log4j.properties 
application.log.system.out=off 

log4j.xml:

<?xml version="1.0" encoding="UTF-8" ?> 
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 
<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
    <appender name="console" class="org.apache.log4j.ConsoleAppender"> 
     <param name="Target" value="System.out"/> 
     <layout class="org.apache.log4j.PatternLayout"> 
      <param name="ConversionPattern" value="%m%n"/> 
     </layout> 
    </appender> 
<logger name="play"> 
    <level value="debug"/> 
</logger> 
<root> 
    <priority value="info"/> 
    <appender-ref ref="console"/> 
</root> 
</log4j:configuration> 

log4j.properti es:

log4j.rootLogger=ERROR, Rolling 
log4j.logger.play=INFO 
log4j.appender.Rolling=org.apache.log4j.RollingFileAppender 
log4j.appender.Rolling.File=${application.path}/logs/application.log 
log4j.appender.Rolling.MaxFileSize=1MB 
log4j.appender.Rolling.MaxBackupIndex=100 
log4j.appender.Rolling.layout=org.apache.log4j.PatternLayout 
log4j.appender.Rolling.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m %n 
log4j.appender.Console=org.apache.log4j.ConsoleAppender 
log4j.appender.Console.layout=org.apache.log4j.PatternLayout 
log4j.appender.Console.layout.ConversionPattern=%d{ABSOLUTE} %-5p ~ %m%n 
+1

Witaj, Ivan, witam w stackoverflow. Nie jest źle odpowiadać na własne pytania, zwłaszcza jeśli myślisz, że ktoś z nich korzysta. Czy możesz jednak szybko podsumować to, co zrobiłeś? Jesteśmy zwykłymi śmiertelnikami i nie czytamy XML jako naszego podstawowego języka. Czy masz dwa pliki konfiguracyjne Apache, jeden w formacie XML i jeden w formacie właściwości, a wybrany niewłaściwy? –