全部!
对于我们的一个项目,我们正在使用 Jenkins 持续集成系统。构建过程非常繁重,会产生很多不同的日志。为了使日志更易于阅读,我决定创建一个 Jenkins 插件,它将重新格式化日志并使它们更具可读性。为此,我为 ConsoleLogFilter 创建了一个扩展。那里唯一一个被覆盖的方法现在看起来像这样:
public OutputStream decorateLogger(AbstractBuild abstractBuild, OutputStream outputStream) throws IOException, InterruptedException {
FilterOutputStream filter = new FilterOutputStream(outputStream) {
private String currentLogMessage = "";
@Override
public void write( int data ) throws IOException {
switch (data) {
case '\n':
if (currentLogMessage.startsWith("+")) {
currentLogMessage = "<span style='color: darkgray; font-size: 10pt'>" + currentLogMessage + "</span>";
}
currentLogMessage += Character.toString ((char) data);
out.write( currentLogMessage.getBytes() );
System.out.println(currentLogMessage);
currentLogMessage = "";
break;
default:
currentLogMessage += Character.toString ((char) data);
break;
}
}
};
return filter;
}
这个问题显得非常棘手。这个装饰器做得很好,在 Jenkins 日志中我看到消息正确地用 HTML-span 包装(System.out.println(...) 的结果)。它看起来像这样:
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
但是当涉及到浏览器时,似乎所有像 < 这样的开始标记符号都被替换为 < 并且浏览器无法正确解析此格式
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
<span style='color: darkgray; font-size: 10pt'>+ some log content</span>
有没有人看到这个问题?有什么办法可以解决吗?