Jenkins日志中的Html标签

时间:2013-08-01 05:27:30

标签: html logging jenkins formatting

所有!

对于我们的一个项目,我们使用的是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>

但是当涉及到浏览器时,所有打开的标签符号都显示为&lt;被替换为&amp; lt;和浏览器无法正确解析此格式

&lt;span style='color: darkgray; font-size: 10pt'>+ some log content&lt;/span>
&lt;span style='color: darkgray; font-size: 10pt'>+ some log content&lt;/span>
&lt;span style='color: darkgray; font-size: 10pt'>+ some log content&lt;/span>

有人看到过这个问题吗?有没有办法解决它?

0 个答案:

没有答案