2016-11-04 3 views
1

Jenkinsの起動スクリプトの出力をキャプチャしようとしていますが、空の出力しか得られません。Jenkinsの起動ログをキャプチャする方法

ジェンキンスの出力は、私がTTYの出力をキャプチャするためにも、試してみた

#!/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")}' 

の端末に表示されますが、私はどこでも検索してみましたが、私

#!/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")}' 

として空の見える

jenkins.logファイルを見つけることができません、誰もが何か示唆を持っていますか?

+0

私は全くわからないんだけどあなたが出力をキャプチャする必要がある場合は、たぶんジェンキンスをあるプロセスで起動させ、別のプロセスからログを取得する必要があります。つまり、あなたは出力を「tee」する必要があるかもしれません(そうそうです)。(http://stackoverflow.com/questions/692000/how-do-i-write-stderr-to-a-file-while-using-tee-パイプでファイルを処理し、そこから処理し、パイプを 'awk'に取り除きます。 'awe'は' tee'によって書かれたファイルでも使用できます – alok

+0

また、 '/ var/log/jenkins/jenkins.log'の中にログが入ることを望まないと仮定していますか? – alok

+0

@alok返事をありがとう。問題は、出力が捕捉されず、パイプで 'awk'がシェルに表示されても(リダイレクトされていないが、まだ同じ場所に行き着いている)ということです。 私はすでに '/ var/log/jenkins /'をチェックしていて、そのフォルダは空です –

答えて

0

次のGroovyのファイルを作成します:$ JENKINS_HOME/init.groovy.d /エクストラlogging.groovy

再起動ジェンキンスとチェックディレクトリ$ JENKINS_HOME /ログ/

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); 
関連する問題