Gradle logging с помощью slf4j и log4j2 - PullRequest
0 голосов
/ 29 ноября 2018

Я столкнулся с проблемой, когда 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?

...