お知らせ
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();
}
}
}