4

全て!

私たちのプロジェクトの 1 つで、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;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>

誰もこの問題を見ましたか?それを修正する方法はありますか?

4

0 に答える 0