Der Grund für die Probleme ist, dass die logback Konfigurationsdatei sollte nie kompiliert werden. Es wird zur Laufzeit von LogBack über GroovyShell
oder einen ähnlichen Mechanismus gelesen.
Die Lösung hängt von Ihrer Projektkonfiguration ab. Nach Sie eine Lösung für ein Projekt bauen mit Gradle nach dem Maven Standard Directory Layout finden:
erste Datei ist 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")
}
}
zweite Datei ist 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"])
ich die Gradle weggelassen bauen Datei (build.gradle
).
Das Standard-Verzeichnis-Layout garantiert, dass jede Datei in src/main/groovy
kompiliert wird, während alles in src/main/resources
im Klassenpfad enthalten ist. LogBack kann diese Datei zur Laufzeit finden.
Aktualisieren: Ich habe Ihr Problem nicht sorgfältig genug gelesen. Ich konnte das Problem nicht lösen, wenn sich beide Dateien im selben Verzeichnis befinden und ich es über groovy Test.groovy
starte. Ich denke, das ist nicht möglich. Der groovy-Befehl kompiliert immer alle groovigen Dateien im aktuellen Verzeichnis und im angegebenen Klassenpfad.
Wie könnte es Skript funktioniert nicht? Erklären Sie den Grund. Ich denke, die richtige Lösung wäre, dass Ihr Skript funktioniert und nicht auf die XML-Konfiguration zurückgreift. – Archer