Code: Select all
import ch.qos.logback.classic.Level
import ch.qos.logback.classic.LoggerContext
import ch.qos.logback.classic.encoder.PatternLayoutEncoder
import ch.qos.logback.core.ConsoleAppender
import org.slf4j.Logger
import org.slf4j.LoggerFactory
static void setupLibraryLoggers() {
def jgitLogger = LoggerFactory.getLogger("org.eclipse.jgit")
jgitLogger.setLevel(Level.INFO)
}
static Logger setupLogger() {
LoggerContext logCtx = LoggerFactory.getILoggerFactory();
PatternLayoutEncoder logEncoder = new PatternLayoutEncoder();
logEncoder.setContext(logCtx);
logEncoder.setPattern("%-12date{YYYY-MM-dd HH:mm:ss.SSS} %highlight(%-5level) - %msg%n");
logEncoder.start();
ConsoleAppender logConsoleAppender = new ConsoleAppender();
logConsoleAppender.setContext(logCtx);
logConsoleAppender.setName("console");
logConsoleAppender.setEncoder(logEncoder);
logConsoleAppender.start();
Logger log = logCtx.getLogger(this.class);
log.setAdditive(false);
log.setLevel(Level.DEBUG);
log.addAppender(logConsoleAppender);
return log;
}
@Grapes(
[
@Grab(group = 'org.eclipse.jgit', module = 'org.eclipse.jgit', version = '7.1.0.202411261347-r'),
@Grab(group = 'ch.qos.logback', module = 'logback-classic', version = '1.5.16'),
@Grab(group='de.gesellix', module='docker-client', version='2025-01-19T00-00-00'),
@Grab(group='commons-io', module='commons-io', version='2.18.0'),
@Grab(group='org.apache.commons', module='commons-compress', version='1.27.1')
]
)
import static Logging.setupLogger
import static Logging.setupLibraryLoggers
Logging.setupLibraryLoggers()
log = Logging.setupLogger()
log.info("Test")
< /code>
Wenn ich dies mit Groovy 2.5.23 ausführe, funktioniert dies korrekt. Wenn ich jedoch versuche, auf Groovy zu gehen, < /p>
/usr/local/groovy-4.0.25/bin/groovy -cp $HOME/workspace/jobs ~/workspace/jobs/Runner.groovy
SLF4J(W): No SLF4J providers were found.
SLF4J(W): Defaulting to no-operation (NOP) logger implementation
SLF4J(W): See https://www.slf4j.org/codes.html#noProviders for further details.
Caught: groovy.lang.MissingMethodException: No signature of method: org.slf4j.helpers.NOPLogger.setLevel() is applicable for argument types: (ch.qos.logback.classic.Level) values: [INFO]
groovy.lang.MissingMethodException: No signature of method: org.slf4j.helpers.NOPLogger.setLevel() is applicable for argument types: (ch.qos.logback.classic.Level) values: [INFO]
at Logging.setupLibraryLoggers(Logging.groovy:10)
at Runner.run(Runner.groovy:18)
< /code>
Es sieht so aus, als ob ich die richtige Logback -Bibliothek (Traube) importiere. Warum bewirkt SLF4J, das Logback -Protokollierungs -Backend nicht korrekt zu identifizieren und zu laden?>