2011-12-02 57 views
6

我在我的Play Framework應用程序中配置了日誌記錄。當我在產品或開發模式下運行應用程序或通過命令(遊戲測試)運行測試時 - 一切工作正常,但在運行「播放自動測試」時測試無法執行。請幫忙!啓動自動測試時在Play Framework中配置日誌記錄

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> 

當我用下面的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>  

測試運行命令「播放

在application.conf

自動測試「成功執行。請說明如何配置Play(輸出到文件)中的日誌記錄,以運行並執行「播放自動測試」中的測試!

回答

1

這真是一個戲!錯誤。這並不是因爲你已經用一個單獨的文件配置了log4j,儘管這樣做會隱藏另一個錯誤信息:「play.tmp爲null時,它應該是play.tmp = none」(這個喜歡的東西 - 如果你刪除了你的custon log4j.xml文件並重新執行「play auto-test」),你會得到這個結果。問題是,即使你設置play.tmp = none,它仍然不起作用。此外,如果你比較他們的在線文件播放的控制檯輸出你已經意識到有什麼地方錯了:

文檔說:

「的‘!自動測試’命令做同樣的比'測試「命令,但它會自動啓動瀏覽器,運行所有測試並停止。」

控制檯賽斯(當你做 「玩自動測試」):

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

答案很簡單

在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

嗨Ivan,歡迎來到stackoverflow。回答自己的問題並沒有錯,特別是如果你認爲有人從中受益。你能不能迅速總結你做了什麼?我們僅僅是凡人,不會將XML讀爲我們的基礎語言。你有兩個Apache配置文件,一個是XML格式,另一個是屬性格式,選擇了錯誤的文件? –