【问题标题】:Configuration logging in Play Framework at start up auto-test启动自动测试时 Play Framework 中的配置日志记录
【发布时间】:2011-12-02 16:28:36
【问题描述】:

我在 Play Framework 应用程序中配置了日志记录。当我在 prod 或 dev 模式下运行应用程序或通过命令运行测试(播放测试)时 - 一切正常,但是当我运行他们的“播放自动测试”时测试无法执行。请帮忙!

在 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 中配置日志记录(输出到文件)!

【问题讨论】:

    标签: java log4j playframework


    【解决方案1】:

    这简直就是一场戏!漏洞。这不是因为您使用单独的文件配置了 log4j,尽管这样做会隐藏另一条错误消息:“play.tmp is null when it should be play.tmp=none”(这喜欢你如果您删除 custon log4j.xml 文件并重新执行“播放自动测试”,则会得到此信息)。问题是即使您将其设置为 play.tmp=none 它仍然无法正常工作。此外,如果您将他们的在线文档与 Play! 的控制台输出进行比较,您就会发现有些地方出了问题:

    文档说:

    “'auto-test' 命令的作用与 'test' 命令相同,但它会自动启动浏览器,运行所有测试,然后停止。”

    控制台sais(当你“玩自动测试”时):

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

    【讨论】:

      【解决方案2】:

      答案很简单

      在 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
      

      【讨论】:

      • 嗨,Ivan,欢迎来到 stackoverflow。回答你自己的问题并没有错,特别是如果你认为有人从中受益。然而,你能快速总结一下你做了什么吗?我们只是凡人,不会将 XML 作为我们的基础语言来阅读。您是否有两个 Apache 配置文件,一个是 XML 文件,一个是属性格式文件,然后选择了错误的文件?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多