理由で
おかげでlogback設定ファイルをコンパイルしてはならないということです。実行時にLogBackからGroovyShell
または同様のメカニズムを介して読み込まれます。
解決方法は、プロジェクトの設定によって異なります。
最初のファイルがsrc/main/groovy/Test.groovy
次のとおりです:あなたはこのプロジェクトのためのソリューションは、MavenのStandard Directory Layout以下Gradleでビルドができます以下の
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"])
私はGradleのビルドを省略しましたファイル(build.gradle
)。
src/main/groovy
のすべてのファイルがコンパイルされ、src/main/resources
のすべてがクラスパスに含まれていることが標準のディレクトリレイアウトによって保証されます。そのため、LogBackは実行時にそのファイルを見つけることができます。
更新:問題を十分に慎重に読まなかった。両方のファイルが同じディレクトリにあり、私がgroovy Test.groovy
で起動すると、問題を解決できませんでした。私はこれが不可能だと思う。 groovyコマンドは常に、現在のディレクトリと指定されたクラスパス内のすべてのGroovyファイルをコンパイルします。
スクリプトはどのように機能しませんか?理由を説明してください。私は適切な解決策は、あなたのスクリプトを働かせて、.xml設定にフォールバックさせることではないと思います。 – Archer