我在我的 Play Framework 应用程序中配置了日志记录。当我在生产或开发模式下运行应用程序或通过命令运行测试( Play 测试)时 - 一切正常,但当我运行他们的“Play 自动测试”时测试无法执行。请帮忙!
在 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 (输出到文件)中的日志记录!
最佳答案
这几乎是一个游戏!漏洞。这不是因为您使用单独的文件配置了 log4j,尽管这样做会隐藏另一条错误消息:“play.tmp is null when it should be play.tmp=none”(有点像这样 - 你'如果您删除自定义 log4j.xml 文件并重新执行“Play 自动测试”),就会得到这个。问题是,即使您将其设置为 play.tmp=none,它仍然无法正常工作。此外,如果您将他们的在线文档与 Play! 的控制台输出进行比较,您就会发现问题所在:
文档说:
“‘auto-test’命令与‘test’命令的作用相同,但它会自动启动浏览器,运行所有测试,然后停止。”
控制台说(当你做“Play 自动测试”时):
ATTENTION: You're running Play! in DEV mode
~
~ Go to http://localhost:9000/@tests to run the tests
~
关于java - 启动自动测试时 Play Framework 中的配置日志记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8359435/