1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【初心者向け】BUILD SUCCESSFUL なのに ERROR?Spring Batch ログの正しい読み方

1
Posted at

はじめに

「BUILD SUCCESSFUL なのに ERROR が出てる…?」
と混乱したことはありませんか?

私自身、未経験からエンジニアに転職し、現在は Java(Spring Boot / Spring Batch) を使っています。
最初はログの見方がまったく分からず、

  • エラーが出ている=失敗?
  • ビルド成功=全部うまくいった?
  • どこを見ればいいの?

と毎回悩んでいました。

この記事では、
👉 ログの見方がまったく分からない初心者向け
👉 「BUILD SUCCESSFUL なのに ERROR が出る理由」
できるだけ噛み砕いて 解説します。


結論:ログで何が起きているのか

まず結論です。

バッチ処理の途中で何らかのエラーは発生している
ただし処理は中断されず、最後まで実行されている
その結果、Gradle 的には BUILD SUCCESSFUL になっている

つまり、

バッチの中でエラーは出た
→ でも止まらずに処理を続けた
→ プロセスは正常終了した

という状態です。

📌 ビルド成功 = 処理が全部うまくいった
ではない、というのが重要なポイントです。


BUILD SUCCESSFUL の本当の意味

ログの最後に出てくるこれ👇

BUILD SUCCESSFUL in 13m 33s

これは、

Gradle のビルド/実行プロセスが異常終了しなかった

という意味です。

初心者が勘違いしやすいポイント

  • ❌ 処理内容がすべて成功した
  • ❌ エラーが一切なかった

ではありません。

あくまで
👉 「Java プロセスが例外で落ちずに終了した」
という意味です。


Spring / Java のログレベルを知ろう(超重要)

まずはログの基本から。

ログレベル 意味
ERROR エラー(重大な問題の可能性)
WARN 警告(注意は必要だが処理は続く)
INFO 通常の処理ログ
DEBUG 詳細なデバッグ用ログ

初心者の頃は
「ERROR が出た=即失敗」
と思いがちですが、実はそうとは限りません。


今回の ERROR ログは何を意味している?

ログの途中に、次のような出力があります。

【Error occurred】ID:111111

見た目は完全に「エラー」ですが、重要なのはここ👇

ポイント① 例外(Exception)が投げられていない

通常、Java で致命的なエラーが起きると、こんなログが出ます。

Exception in thread "main" ...
at xxx.java:123

これを スタックトレース と呼びます。

👉 今回のログには これが出ていません


ポイント② プログラムがエラーを「キャッチ」している

つまり、

  • 業務的にはエラー扱いのデータ
  • 想定外の入力値
  • 処理できないレコード

などを検知して、

ログに ERROR を出す  
 でも例外は投げない  
 処理は継続

という設計になっている可能性が高いです。

Spring Batch ではよくある設計です。


なぜ ERROR が出ても BUILD SUCCESSFUL なのか

理由はシンプルです。

Gradle が見ているのは「終了ステータス」だけ

  • ❌ 例外を投げてプロセスが落ちる → BUILD FAILED
  • ✅ 例外を投げずに最後まで動く → BUILD SUCCESSFUL

アプリ内でエラーが起きたかどうかは関係ありません。

そのため、

ERROR ログが出ている
= Gradle 的には失敗

とはならないのです。


初心者向け:ERROR ログを見るときのチェックポイント

① ERROR の「前後」を見る

ERROR そのものより、

  • 直前に何をしていたか
  • 対象データは何か

を見るのが大切です。

業務エラーとしてログを出しているだけ、というケースも多いです。


② スタックトレースがあるか?

これが一番重要です。

✔ スタックトレースあり
→ プログラムエラーの可能性大

✔ スタックトレースなし
→ 業務エラー or 想定内エラーの可能性


③ 本当に成功したかは「DB」を見る

ログだけでは判断できないことも多いです。

  • 対応履歴テーブル
  • 処理結果テーブル

実際に SELECT して確認 しましょう。

これが一番確実です。


今回のログを初心者向けにまとめると

  • 🔹 BUILD SUCCESSFUL
    → バッチは最後まで正常終了した
  • 🔹 ERROR ログあり
    → 処理中に業務的なエラーが発生した可能性
  • 🔹 スタックトレースなし
    → 致命的なプログラムエラーではない
  • 🔹 成功可否の判断
    → ログだけでなく DB を確認する必要あり

おわりに

はじめの頃は

ERROR が出てるのに成功?
成功って何?失敗って何?

と本当に混乱しました。

でも、

  • ビルド結果
  • ログレベル
  • 例外の有無

を分けて考えられるようになると、
ログが「怖いもの」から「情報源」に変わります。

同じように悩んでいる初心者の方の助けになれば嬉しいです 🙌

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?