私はSBTにログインするためにLog4Jを使用しています。設定ファイルでは、ルートノードのレベルをTRACE
と定義しました。プロジェクト(sbt run
)を実行すると、すべてのデバッグ出力が正しく表示されます。しかし、テスト(sbt test
)を実行すると、出力が全く生成されません。出力を見るには、クラスを設定に挿入する必要があります。スカートを使用しているときにsbtにLog4J出力がありません
このテストはJUnitスタイルで記述されています。 Eclipseでテストを実行すると、すべてのLog4J出力が表示されます。だから、それはSBTまたはscalatest
の問題であるようです。
Log4Jの設定:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration debug="false" xmlns:log4j="http://jakarta.apache.org/log4j/">
<appender name="stdout" class="org.apache.log4j.ConsoleAppender">
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%-5r [%-5p] %c: %M - %m%n"/>
</layout>
</appender>
<appender name="asyncApp" class="org.apache.log4j.AsyncAppender">
<appender-ref ref="fileApp"/>
</appender>
<appender name="fileApp" class="org.apache.log4j.FileAppender">
<param name="File" value="testlog_Compiler"/>
<param name="Append" value="true" />
<param name="Threshold" value="ALL"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%d [%-5p] %c: %M - %m%n"/>
</layout>
</appender>
<appender name="fileAppTest" class="org.apache.log4j.FileAppender">
<param name="File" value="testlog_Tests"/>
<param name="Append" value="true" />
<param name="Threshold" value="ALL"/>
<layout class="org.apache.log4j.EnhancedPatternLayout">
<param name="ConversionPattern" value="%d [%-5p] %c: %M - %m%n"/>
</layout>
</appender>
<logger name="main.Main$" additivity="true">
<level value="INFO" />
</logger>
<!--
<logger name="compile.Compiler" additivity="true">
<level value="DEBUG" />
</logger>
-->
<logger name="test" additivity="false">
<level value="TRACE" />
<appender-ref ref="stdout"/>
<appender-ref ref="fileAppTest"/>
</logger>
<root>
<priority value="TRACE"/>
<appender-ref ref="asyncApp"/>
<appender-ref ref="stdout"/>
</root>
</log4j:configuration>
私は、configファイルのこのバージョンを使用する場合、私はLog4Jの設定ファイルでそのノードのコメントを解除しない限り、compile.Compiler
のテストは任意のログ出力を生成しません。 (これは単に、最小限の例です。)
class Comp2011ParentProject(info: ProjectInfo) extends DefaultProject(info) {
val compiler = project("compile", "compile", new Compile(_))
class compiler(info: ProjectInfo) extends DefaultProject(info) with Eclipsify {
val scalatest = "org.scalatest" % "scalatest_2.9.0" % "1.6.1"
val junitInterface = "com.novocode" % "junit-interface" % "0.6" % "test->default"
val log4j = "log4j" % "log4j" % "1.2.16"
val log4jExtras = "log4j" % "apache-log4j-extras" % "1.1"
}
}
この問題が発生し、どのようにそれを止めるために、なぜ誰もが手掛かりを持っています:SBTの設定ファイルでは、これらの依存関係はcompile.Compiler
のために定義されていますか?
sbt console( 'sbt')を入力してテスト(' test')を実行し、_immediatelly_ '' last test'を試してみると、出力が表示されますか? –