原因你的問題是,的logback配置文件不應該編譯。它在運行時從LogBack通過GroovyShell
或類似的機制讀取。
解決方案取決於您的項目設置。下面你會發現一個項目的解決方案建立與Gradle以下Maven的Standard Directory Layout:
第一個文件是src/main/groovy/Test.groovy
:
import org.slf4j.Logger
import org.slf4j.LoggerFactory
class Test {
static Logger LOG = LoggerFactory.getLogger(Test.class)
static void main(String[] args) {
LOG.debug("Test")
}
}
第二個文件是src/main/resources/logback.groovy
:
import static ch.qos.logback.classic.Level.INFO
import static ch.qos.logback.classic.Level.DEBUG
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
appender("CONSOLE", ConsoleAppender) {
encoder(PatternLayoutEncoder) {
pattern = "%-4relative [%thread] - %msg%n"
}
}
root(DEBUG, ["CONSOLE"])
我省略了搖籃建設文件(build.gradle
)。
標準目錄佈局保證編譯src/main/groovy
中的每個文件,而src/main/resources
中的所有內容都包含在類路徑中。所以LogBack能夠在運行時找到該文件。
更新:沒有仔細閱讀您的問題。當兩個文件都在同一個目錄下時,我無法解決問題,我通過groovy Test.groovy
啓動它。我認爲這是不可能的。 groovy命令總是編譯當前目錄和給定類路徑中的所有groovy文件。
它怎麼可能是腳本不起作用?解釋原因。我認爲正確的解決方案是讓腳本工作,而不是回退到.xml配置。 – Archer