Maurizio Carboni
Maurizio Carboni

Reputation: 131

How to capture the Jenkins startup Log

I'm trying to capture the output of the startup script of Jenkins, but all I get is an empty output.

The output of Jenkins appears in the terminal

#!/bin/bash
function sendNotificationOnSlack() {
    curl -X POST ...
}
export -f sendNotificationOnSlack
java -Dhudson.DNSMultiCast.disabled=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpPort=3999 | awk '/Jenkins is fully up and running/ {system("bash -c sendNotificationOnSlack")}'

I've tried even to capture the output of the TTY, but appears as empty

#!/bin/bash
currentTTY=$(tty)
echo $currentTTY
function sendNotificationOnSlack() {
    curl -X POST ...
}
export -f sendNotificationOnSlack
java -Dhudson.DNSMultiCast.disabled=true -jar /usr/local/opt/jenkins/libexec/jenkins.war --httpPort=3999
tail -f $currentTTY | awk '/Jenkins is fully up and running/ {system("bash -c sendNotificationOnSlack")}'

I tried to search everywhere but I can't find the jenkins.log file, anyone has any suggestion?

Upvotes: 1

Views: 5244

Answers (1)

user481572
user481572

Reputation:

Create the following groovy file: $JENKINS_HOME/init.groovy.d/extra-logging.groovy

Restart Jenkins and check directory $JENKINS_HOME/logs/

import java.util.logging.ConsoleHandler
import java.util.logging.FileHandler
import java.util.logging.SimpleFormatter
import java.util.logging.LogManager
import jenkins.model.Jenkins

def logsDir = new File(Jenkins.instance.rootDir, "logs")

if(!logsDir.exists()){
    println "--> creating log dir";
    logsDir.mkdirs();
}

def loggerWinstone = LogManager.getLogManager().getLogger("");
FileHandler handlerWinstone = new FileHandler(logsDir.absolutePath + "/jenkins-winstone.log", 1024 * 1024, 10, true);

handlerWinstone.setFormatter(new SimpleFormatter());
loggerWinstone.addHandler (new ConsoleHandler());
loggerWinstone.addHandler(handlerWinstone);

Upvotes: 2

Related Questions