お知らせ
2023.12.5(Tue)
こんにちは。ぐっさんです。
今回は、ログファイルの中に出力されている特定のxmlを抽出し、解析する方法をご紹介します。
ログファイルを1行目から検索し、xmlを文字列にする単純なものですが、障害対応などで便利ですので、参考になればと思います。
文字列にしたxmlをJAXBでUnmarchelしてオブジェクトにすると、バッチ処理でも活用できると思います。
サンプルプログラムは下記の通りです。
StringBuilderに対象のタグの文字列を追加していきます。タグの終了を検知した時点で、初期化し次のタグを検索します。
public class LogConverter { public static void main(String[] args) { String filepath = "logs/application.log"; // ファイルを読み込む try (BufferedReader reader = new BufferedReader(new FileReader(filepath))) { String str; StringBuilder sb = new StringBuilder(); boolean startTagFlag = false; while ((str = reader.readLine()) != null) { // 開始タグを検知 if (str.indexOf("<testTag") != -1) { startTagFlag = true; } else if (startTagFlag) { sb.append(str); } // 終了タグを検知 if (str.indexOf("</testTag>") != -1) { startTagFlag = false; System.out.println(sb.toString()); // ---------------- // 必要な処理を記載 // ---------------- sb = new StringBuilder(); } } } catch (Exception e) { e.printStackTrace(); } } }