9

logback.groovy で構成された logback を groovy で使用できません。

ディレクトリにたとえばFooBar.groovyというスクリプトファイルがあり、 groovy FooBar.groovy groovyを実行するとlogback.groovyファイルがログバック構成ファイルもコンパイルしようとし、スクリプトが機能しない場合、デフォルトのxml構成にフォールバックする必要がありますlogback 用のファイル (logback.xml)。

どうすればこれを機能させることができますか? groovy somefiles.groovy logback.groovy を無視するように groovy を呼び出して構成できますか?

助けてくれてありがとう

4

2 に答える 2

13

問題の理由は、logback 構成ファイルをコンパイルしてはならないことです。GroovyShell実行時に、または同様のメカニズムを介して LogBack から読み取られます。

解決策は、プロジェクトの設定によって異なります。以下に、Maven標準ディレクトリ レイアウトに従ってGradleを使用してプロジェクトをビルドするためのソリューションを示します。

最初のファイルは次の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")
    }
}

2 番目のファイルは次の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 ファイルを常にコンパイルします。

于 2013-02-19T15:52:25.070 に答える