如何将通过 logback.groovy 配置的 logback 与 groovy 一起使用

2024-04-10

我无法将通过 logback.groovy 配置的 logback 与 groovy 一起使用。

如果在目录中我有一个名为 FooBar.groovy 的脚本文件和文件 logback.groovy 当我跑步时groovy FooBar.groovygroovy 也尝试编译 logback 配置文件,但我的脚本不起作用,我必须回退到 logback 的默认 xml 配置文件(logback.xml)。

我怎样才能让它发挥作用?我可以打电话吗groovy somefiles.groovy并配置 groovy 忽略 logback.groovy?

谢谢您的帮助


出现问题的原因是 logback 配置文件永远不应该被编译。它在运行时通过 LogBack 读取GroovyShell或类似的机制。

解决方案取决于您的项目设置。接下来您将找到一个项目构建的解决方案Gradle http://www.gradle.org/跟随 Maven标准目录布局 http://maven.apache.org/guides/introduction/introduction-to-the-standard-directory-layout.html:

第一个文件是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"])

我省略了 Gradle 构建文件(build.gradle).

标准的目录布局保证了每个文件src/main/groovy已编译,而所有内容都在src/main/resources包含在类路径中。所以 LogBack 能够在运行时找到该文件。

Update: 没有仔细阅读你的问题。当两个文件位于同一目录中并且我通过以下方式启动它时,我无法解决问题groovy Test.groovy。我认为这是不可能的。 groovy 命令始终编译当前目录和给定类路径中的所有 groovy 文件。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将通过 logback.groovy 配置的 logback 与 groovy 一起使用 的相关文章

随机推荐