Tôi đang sử dụng Log4J để đăng nhập SBT. Trong tệp cấu hình, tôi đã xác định mức TRACE
cho nút gốc. Khi tôi chạy dự án (sbt run
) tất cả đầu ra gỡ lỗi được hiển thị chính xác. Nhưng khi tôi chạy thử nghiệm (sbt test
), không có đầu ra nào được tạo ra. Tôi cần phải chèn lớp vào cấu hình để xem đầu ra.Không có đầu ra Log4J trong sbt khi sử dụng scalatest
Bài kiểm tra được viết theo kiểu JUnit. Thực hiện các bài kiểm tra với Eclipse cho thấy tất cả Log4J Output. Vì vậy, nó có vẻ là một vấn đề với SBT hoặc scalatest
.
Log4J Cấu hình:
<?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>
Khi tôi sử dụng phiên bản này của tập tin cấu hình, các bài kiểm tra của compile.Compiler
không tạo ra bất kỳ dữ liệu ghi nhận, trừ khi tôi bỏ ghi chú nút của nó trong cấu hình Log4J. Trong tập tin cấu hình SBT, những phụ thuộc được định nghĩa cho compile.Compiler
: (Đây chỉ là một ví dụ rất nhỏ.)
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"
}
}
Có ai có một đầu mối tại sao điều này xảy ra và làm thế nào để ngăn chặn nó?
Nếu bạn cố gắng nhập bảng điều khiển sbt ('sbt'), sau đó chạy thử nghiệm (' test') và _immediatelly_ try 'last test', nó có hiển thị đầu ra không? –