Логирование в Jenkins

В Jenkins очень забавно сделано логирование: через WEB UI можно добавить логирование нужных логгеров в кольцевой буффер.

Но для логирования в файл нужно немного поплясать с бубном.

Если загуглить, что можно найти страницу https://wiki.jenkins.io/display/JENKINS/Logging, но пример с неё не очень удачный: там нет логирования времени события.

После некоторого копания я пришел к следующему файлу init.groovy.d/extralogging.groovy:

import jenkins.model.Jenkins

import java.util.logging.FileHandler
import java.util.logging.LogManager
import java.util.logging.LogRecord
import java.util.logging.SimpleFormatter

// Log into a file
def RunLogger = LogManager.getLogManager().getLogger("org.kohsuke.github")
def logsDir = new File(Jenkins.instance.rootDir, "logs")
if (!logsDir.exists()) {
    logsDir.mkdirs()
}
FileHandler handler = new FileHandler(logsDir.absolutePath + "/org.kohsuke.github-%g.log", 100 * 1024 * 1024, 10, true)
handler.setFormatter(new SimpleFormatter() {
    private static final String format = '[%1$tF %1$tT] [%2$-7s] %3$s %n'

    @Override
    synchronized String format(LogRecord lr) {
        return String.format(format,
                new Date(lr.getMillis()),
                lr.getLevel().getLocalizedName(),
                formatMessage(lr)
        );
    }
})
RunLogger.addHandler(handler)
comments powered by Disqus