Я столкнулся с проблемой, когда slf4j, поддерживаемый операторами log4j2, не отображается в выводе консоли задания конвейера Jenkins.Код конвейера находится в Groovy.Подробности в этой теме .
Я пролистал документацию Gradle , в которой говорится:
Вы также можете подключиться к Gradle'sсистема ведения журнала из других классов, используемых в сборке (например, из каталога buildSrc).Просто используйте регистратор SLF4J.Вы можете использовать этот регистратор так же, как вы используете предоставленный регистратор в скрипте сборки.
Пример 4. Использование SLF4J для записи сообщений журнала
import org.slf4j.LoggerFactory
def slf4jLogger = LoggerFactory.getLogger('some-logger')
slf4jLogger.info('An info log message logged using SLF4j')
Gradleтакже обеспечивает интеграцию с наборами инструментов Java Util Logging, Jakarta Commons Logging и Log4j.Любые сообщения журнала, которые ваши классы сборки пишут с помощью этих инструментариев журналирования, будут перенаправлены в систему журналирования Gradle.
Я не уверен, понял ли я приведенные выше цитаты.У меня есть следующие вопросы:
1. Проще говоря, означает ли это, что вы не можете обойти регистрацию Gradle?2. Неужели код, подобный приведенному ниже, будет по-прежнему вызывать систему журналирования Gradle, уровень журналирования которой отличается от уровня slf4j / log4j2? Здесь я пытаюсь использовать slf4j, поддерживаемый log4j2, даже не зная о Gradleведение журнала (аналогично примеру 4 в журнале Gradle).
class ConfigurationPluginInitBase implements Plugin<Project> {
private static final Logger logger = LoggerFactory.getLogger(ConfigurationPluginInitBase.class)
.
.
.
protected void configureDependenciesResolution(Project project) {
.
.
.
logger.info("Configuring Dependencies Resolution")
logger.info('Does the buildInfo.json exist? {}' , file.exists())
logger.info('The list of dependencies should be rewritten: {}' ,rewriteDependency)
/*Added this as there was no other way to see what happened to the logger instance*/
println 'Is the logger instance created at all???' + logger
.
.
.
logger.info('List: {}' , listToUpdate)
}
}
log4j2-test.properties
status = error
name = PropertiesConfig
filters = threshold
filter.threshold.type = ThresholdFilter
filter.threshold.level = debug
appenders = console
appender.console.type = Console
appender.console.name = STDOUT
appender.console.layout.type = PatternLayout
appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c:- %m%n
loggers = console
logger.console.name = ConsoleLog
logger.console.level = debug
logger.console.additivity = false
logger.console.appenderRef.console.ref = STDOUT
rootLogger.level = info
rootLogger.appenderRef.stdout.ref = STDOUT
Частичное build.gradle
.
.
.
dependencies {
compile gradleApi()
compile localGroovy()
compile "org.apache.commons:commons-collections4:4.0"
compile "org.ajoberstar:grgit:1.9.3"
compile "org.ajoberstar:gradle-git:1.7.2"
compile "com.github.zafarkhaja:java-semver:0.9.0"
compile "de.gliderpilot.gradle.semantic-release:gradle-semantic-release-plugin:1.4.0"
compile "com.netflix.nebula:nebula-dependency-recommender:5.2.0"
compile "org.jfrog.buildinfo:build-info-extractor-gradle:4.4.12"
compile "tools.swedbank.gradle.plugin:qualityreport:v1.12.9"
compile "tools.swedbank.gradle.plugin:gradle-tde:v1.24.2"
//slf4j
compile group: 'org.slf4j', name: 'slf4j-api', version: '1.7.9'
//log4j2
compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.1'
compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.1'
//Start: Binding slf4j to an implementation, exactly one should be uncommented at a time
//Use log4j2
compile group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.11.1'
//Use logback
//compile group: 'ch.qos.logback', name:'logback-classic', version: '1.2.3'
//compile group: 'ch.qos.logback', name:'logback-core', version: '1.2.3'
testCompile('org.spockframework:spock-core:1.1-groovy-2.4') {
exclude group: 'org.codehaus.groovy'
}
testCompile gradleTestKit()
}
configurations.all
{
resolutionStrategy
{
force 'org.codehaus.groovy:groovy-all:2.4.12'
}
}
3.Нужно ли что-то настраивать в свойствах gradle.properties, даже если я хочу использовать только комбинацию slf4j + log4j2?