改js法
找一个js文件来修改
页面中加载了./webapps/jenkins/scripts/hudson-behavior.js
于是加入以下行:
function addLoadEvent(func){
var oldonload = window.onload;
if (typeof window.onload != 'function') {
window.onload = func;
} else {
window.onload = function(e) {
oldonload(e);
func(e);
}
}
}
addLoadEvent(function(){
var historyA = document.querySelectorAll('.build-status-link');
var historyB = document.getElementsByTagName('A');
for(var i=0;i<historyA.length;i++){
historyA[i].onclick=function addRedForErrMessage(){
var url = this.getAttribute("href");
new Ajax.Request(url, {
onSuccess:function(rspHtml){
var rspHtmlhtml = document.createElement('html');
rspHtmlhtml.innerHTML=rspHtml.responseText;
var log_text = rspHtmlhtml.getElementsByTagName("pre")[0].innerHTML;
var changed_log_text = changeToRed(log_text);
rspHtmlhtml.getElementsByTagName("pre")[0].innerHTML=changed_log_text;
document.getElementsByTagName("html")[0].innerHTML=rspHtmlhtml.innerHTML;
}
});
return false;
};
}
for(var i=0;i<historyB.length;i++){
if (historyB[i].getAttribute("title")=="Console Output"){
historyB[i].onclick=function addRedForErrMessage(){
var url = this.getAttribute("href");
new Ajax.Request(url, {
onSuccess:function(rspHtml){
var rspHtmlhtml = document.createElement('html');
rspHtmlhtml.innerHTML=rspHtml.responseText;
var log_text = rspHtmlhtml.getElementsByTagName("pre")[0].innerHTML;
var changed_log_text = changeToRed(log_text);
rspHtmlhtml.getElementsByTagName("pre")[0].innerHTML=changed_log_text;
document.getElementsByTagName("html")[0].innerHTML=rspHtmlhtml.innerHTML;
}
});
return false;
};
}
}
});
function changeToRed(log_text){
for(var i=0;i<failWorlds.length;i++){
var failworld = failWorlds[i];
var regworld = "/((?=202|echo).*"+failworld+".*)/gi";
var log_text = log_text.replace(eval(regworld),'<span style="color:red;background:#dddddd;font-weight:900">'+'$1'+'</span>');
}
for(var i=0;i<successWorlds.length;i++){
var successWorld = successWorlds[i];
var regworld = "/"+successWorld+"/gi";
var log_text = log_text.replace(eval(regworld),'<span style="color:white;background:green;font-weight:900">'+successWorld+'</span>');
}
return log_text;
}
保持js的状态
如果你的hudson-behavior.js会在jenkins重启时被覆盖,那么就重写文件或文件内容吧。
插件法
安装并开启AnsiColor插件
安装插件后重启jenkins
配置日志输出
修改日志输出
输出日志时使用echo着色
# echo -e "\e[选项1;选项2[;选项n]m 被着色文字 \e[0m"
# 0表示恢复默认值,\e也可用\033
echo -e "\e[41;5m 333\e[0m"
下图:红底闪烁
参考值:(可在shell中尝试)