「駑馬十駕」を信念に IT系情報を中心に調べた事をコツコツ綴っています。

Javaでログファイルを解析していると、
特定の文字列を含む行だけをサクッと抽出したい
という場面は非常によくあります。

本記事では、最短・シンプル・実務で即使えるJavaコードに絞って、
ログファイルから特定行を抽出する方法を解説します。

Java ログ抽出が一目で分かる王道構図


この記事で分かること

  • Javaでログファイルを1行ずつ読み込む最短コード

  • 特定キーワードを含む行だけを抽出する方法

  • Java 8以降(Stream API)を使った最小構成

  • 大きなログファイルでも使える理由


前提条件

  • Java 8以上

  • テキスト形式のログファイル
    例:app.log


最短コード(Stream API版)

まずは結論です。
最短で目的を達成できるコードがこちら👇

ポイント

  • Files.lines()1行ずつストリーム処理

  • filter()特定文字列を含む行だけ抽出

  • forEach()そのまま標準出力

👉 無駄な変数・List化なし
👉 ログ解析用途としてはこれが最短クラス


抽出条件を変える例

複数キーワードを抽出したい場合


正規表現で抽出したい場合


抽出結果をファイルに出力する場合

標準出力ではなく、別ファイルに書き出したい場合はこちら。

※ Java 16未満の場合は collect(Collectors.toList()) を使用してください。


なぜこの方法が良いのか?

✔ メモリ効率が良い

  • Files.lines()遅延読み込み

  • 巨大ログでも 一括読み込みしない

✔ 可読性が高い

  • 「読む → 絞る → 出力する」が1行で分かる

  • ログ解析用途としてレビューもしやすい

✔ 実務でそのまま使える

  • バッチ処理

  • 障害調査

  • 運用ログの一次解析


よくあるNG例(非推奨)

巨大ログでメモリを圧迫
❌ 障害調査バッチでは危険


公式マニュアル

この処理では Java の
[Files.lines メソッド(Oracle公式)](https://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#lines-java.nio.file.Path-)
を使用しています。
詳細な仕様については、Oracle公式ドキュメントも参考にしてください。

Stream API の filterforEach の動作については、
[Java Stream API の公式解説(Oracle)](https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html)
が分かりやすいです。


まとめ

  • ログから特定行を抽出するなら Stream API一択

  • 最短コードは以下の3行で完結

「とにかく早く原因行を抜き出したい」
そんな場面で、このコードをそのまま使ってください。

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る

Ads by Google

0 0
Article Rating
申し込む
注目する
guest
0 コメント一覧
最も古い
最新 高評価
インラインフィードバック
すべてのコメントを見る
0
あなたの考えが大好きです、コメントしてください。x