Reputation: 131
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
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