Нам нужно, чтобы наши журналы заданий jenkins выполнялись в Splunk. Для этого я пытаюсь добавить стандартную запись в проект (groovy), используя log4j. Я столкнулся с множеством проблем при попытке сделать это.
Мой простой конвейерный код jenkinsfile:
stage('Initialization') {
steps {
script {
try {
def file = findFiles(glob: '**/foo.groovy')
helpers = load(file[0].getPath())
helpers.foo()
} catch (Exception e) {
println("Error during initialization: " + e.getMessage())
println(e.getStackTrace().toString())
}
}
}
}
foo. groovy
@Grab('log4j:log4j:1.2.17')
import org.apache.log4j.*
import groovy.util.logging.*
import org.slf4j.LoggerFactory
def foo() {
def log = LoggerFactory.getLogger("")
def config = new ConfigSlurper().parse(new File("${env.WORKSPACE}/log4jconfig.groovy").toURL())
PropertyConfigurator.configure(config.toProperties())
log.trace "foo"
log.debug "foo"
log.warn "foo"
log.info "foo"
log.error "foo"
}
return this
Я не смог использовать log4j, добавив аннотацию к классу, поскольку jenkins сказал бы: «Захват аннотации jenkins нельзя использовать в песочнице».
Изначально я попытался без какой-либо конфигурации, но это не сработало, поэтому я попробовал это как показано здесь
log4jconfig. groovy
log4j {
appender.stdout = "org.apache.log4j.ConsoleAppender"
appender."stdout.layout"="org.apache.log4j.PatternLayout"
appender.scrlog = "org.apache.log4j.FileAppender"
appender."scrlog.layout"="org.apache.log4j.TTCCLayout"
appender."scrlog.file"="script.log"
rootLogger="debug,scrlog,stdout"
}
Но это тоже не сработало. Я не получаю никаких журналов в выводе консоли, и файл script.log не создается. Есть ли способ настроить log4j в groovy, чтобы я получал журналы на выходе консоли jenkins.
Я уже рассмотрел использование echo для форматирования журналов в формате log4j как:
def log(level, msg){
echo "${java.time.LocalDateTime.now()} level=${level} build=${BUILD_NUMBER} job=${JOB_NAME}
stage=${STAGE_NAME} message=${msg}"
}
def info(msg){
log("INFO",msg)
}
и это работает, но я хочу использовать log4j, если это возможно.