LoginSignup
2
0

More than 3 years have passed since last update.

【Java】スタックトレースをフィルタリングする

Last updated at Posted at 2019-09-17

やること

SpringBoot等のフレームワークでExceptionを自作して、既知の挙動としてエラーを吐く場合であっても、スタックトレースはそのままログに表示されてしまいます。
つまり、エラーが起きている原因がアプリケーション内なのは明白なのに、単純に無駄な情報が表示されているということになります。

スタックトレースが長ければ読解の邪魔になりますし、ログ容量が増えすぎて問題を起こすこともあるため、余計な情報は無い方がよいです。

そこで、スタックトレースをフィルタリングします。

やり方

以下のようにフィルタリング関数を用意し、コンストラクタでsetStackTraceすることでできます。
パッケージ名はcom.wrongwrong.exampleのような文字列で、ルートパッケージを指定します。

public class MyException extends RuntimeException {
    static StackTraceElement[] filteringStackTrace(StackTraceElement[] elements) {
        return Arrays.stream(elements)
                .filter(it -> it.getClassName().startsWith("${パッケージ名}"))
                .toArray(StackTraceElement[]::new);
    }

    public MyException(String msg) {
        super(msg);
        setStackTrace(filteringStackTrace(getStackTrace()));
    }
}
2
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
2
0