Iva*_*nin 6 java log4j playframework
我在Play Framework应用程序中配置了日志记录.当我在prod或dev模式下运行应用程序或通过命令运行测试时(播放测试) - 一切正常,但是当我运行'play auto-test'时,测试无法执行.请帮忙!
在application.conf中:
application.log=INFO
application.log.path=/log4j.xml
Run Code Online (Sandbox Code Playgroud)
的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>
Run Code Online (Sandbox Code Playgroud)
当我使用以下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>
Run Code Online (Sandbox Code Playgroud)
运行命令'play auto-test'的测试成功执行.请告诉我们如何在"播放自动测试"中配置在Play(输出到文件)中运行并执行测试的日志!
这几乎是一场比赛!漏洞。这并不是因为您使用单独的文件配置了 log4j,尽管这样做会隐藏另一条错误消息:“当它应该是 play.tmp=none 时,play.tmp 为空”(这种喜欢的东西 - 你'如果您删除自定义的 log4j.xml 文件并重新执行“播放自动测试”,将会得到此信息)。问题是,即使你将其设置为 play.tmp=none 它仍然无法工作。此外,如果您将他们的在线文档与 Play! 的控制台输出进行比较,您就会意识到有些问题:
文档说:
“‘自动测试’命令的作用与‘测试’命令相同,但它会自动启动浏览器,运行所有测试,然后停止。”
控制台说(当你“播放自动测试”时):
ATTENTION: You're running Play! in DEV mode
~
~ Go to http://localhost:9000/@tests to run the tests
~
Run Code Online (Sandbox Code Playgroud)