全て!
私たちのプロジェクトの 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>
しかし、ブラウザに関しては、 < のようなすべての開始タグ記号が < に置き換えられているように見えます。ブラウザはこのフォーマットを正しく解析できません
<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>
誰もこの問題を見ましたか?それを修正する方法はありますか?