2011-12-02 21 views
6

Ho configurato la registrazione nella mia applicazione Play Framework. Quando eseguo l'applicazione in modalità prod o dev o eseguo test by comand (play test), tutto funziona correttamente, ma il test non può essere eseguito quando eseguo il loro 'auto-test di riproduzione'. Per favore aiuto!Registrazione registrazione in Play Framework all'avvio del test automatico

in 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> 

Quando uso il seguente file 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>  

test eseguendo il comando 'gioco auto-test 'eseguito con successo. Indica come configurare la registrazione in Play (output su file) che esegue ed esegue i test in 'play auto-test'!

risposta

1

Thi è praticamente un gioco! bug. Non è causato dal fatto che tu abbia configurato log4j con un file separato, sebbene farlo nasconderà un altro messaggio di errore: "play.tmp è nullo quando dovrebbe essere play.tmp = none" (qualcosa di simile - tu " Otterrai questo se rimuovi il tuo file log log4j.xml e rifai "play test automatico"). Il problema è che anche se si imposta su play.tmp = none, non funzionerà ancora. Inoltre, se si confronta la loro documentazione in linea per giocare 's output della console avrete già conto che qualcosa non va:

La documentazione dire:

"Il '! Auto-test' comando di fare la stessa cosa che il' test ', ma avvia automaticamente un browser, esegue tutti i test e si ferma. "

Console sais (quando si fa "giocare auto-test"):

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

La risposta è stata molto semplice

in 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

Ciao Ivan, benvenuto nello stackoverflow. Non è sbagliato rispondere alle tue domande, soprattutto se pensi che qualcuno ne tragga beneficio. Potresti comunque riassumere rapidamente ciò che hai fatto? Siamo solo mortali e non leggiamo XML come lingua di base. Hai avuto due file di configurazione di Apache, uno in XML e uno in formato di proprietà e quello sbagliato è stato selezionato? –

Problemi correlati