我无法使用groovy通过logback.groovy配置的logback.
如果在一个目录中我有一个脚本文件调用例如FooBar.groovy和文件logback.groovy当我运行groovy FooBar.groovy
groovy尝试编译logback配置文件而且我的脚本不起作用时,我必须回退到 默认的xml配置用于logback的文件(logback.xml).
我怎样才能使这个工作?我可以调用groovy somefiles.groovy
并配置groovy来忽略logback.groovy吗?
谢谢您的帮助
Chr*_*ipp 12
您遇到问题的原因是永远不应编译回溯配置文件.它在运行时从LogBack通过GroovyShell
或类似的机制读取.
解决方案取决于您的项目设置.下面您将找到一个使用Gradle遵循Maven 标准目录布局的项目构建解决方案:
第一个文件是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")
}
}
Run Code Online (Sandbox Code Playgroud)
第二个文件是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"])
Run Code Online (Sandbox Code Playgroud)
我省略了Gradle构建文件(build.gradle
).
标准目录布局保证src/main/groovy
编译每个文件,而所有内容src/main/resources
都包含在类路径中.因此LogBack能够在运行时找到该文件.
更新:没有仔细阅读您的问题.当两个文件都在同一目录中并且我通过它启动时,我无法解决问题groovy Test.groovy
.我认为这是不可能的.groovy命令总是编译当前目录和给定类路径中的所有groovy文件.