Регистрация конфигурации в Play Framework при запуске авто-теста - PullRequest
6 голосов
/ 02 декабря 2011

Я настроил запись в своем приложении Play Framework.Когда я запускаю приложение в режиме prod или dev или запускаю тест по команде (play test) - все работает нормально, но тест не может выполняться, когда я запускаю их 'play auto-test'.Пожалуйста, помогите!

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

Когда я использую следующий файл 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>     

Проверка выполнения команды 'Play Auto-Test' успешно выполнена.Расскажите, пожалуйста, как настроить логирование в Play (вывод в файл), который запускает и выполняет тесты в 'play auto-test'!

Ответы [ 2 ]

1 голос
/ 06 декабря 2011

Ответ был очень прост

в 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.properties:

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 голос
/ 02 декабря 2011

Это в значительной степени игра!ошибка.Это не связано с тем, что вы сконфигурировали log4j с отдельным файлом, хотя при этом будет скрыто еще одно сообщение об ошибке: «play.tmp имеет значение null, когда должно быть play.tmp = none» (что-то на ваш вкус - вы »Вы получите это, если вы удалите файл custon log4j.xml и повторно выполните «автоматическую проверку воспроизведения»).Проблема в том, что даже если вы установите для play.tmp = none, он все равно не будет работать.Кроме того, если вы сравните их онлайн-документацию с выводом консоли Play!, Вы уже поймете, что что-то не так:

В документах сказано:

"Команда 'auto-test' выполняет командуТо же, что и команда «test», но она автоматически запускает браузер, запускает все тесты и останавливается. "

Консоль sais (когда вы выполняете" play auto-test "):

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