[Java] Filtrer les traces de pile

Choses à faire

Même si vous créez vous-même ʻException avec un framework tel que SpringBoot` et lancez une erreur comme un comportement connu, la trace de la pile sera affichée dans le journal telle quelle. En d'autres termes, il est clair que la cause de l'erreur se trouve dans l'application, mais elle affiche simplement des informations inutiles.

Si la trace de la pile est longue, elle interférera avec la lecture et la capacité du journal augmentera trop, ce qui peut causer des problèmes, il est donc préférable de ne pas avoir d'informations supplémentaires.

Par conséquent, filtrez la trace de la pile.

manière

Vous pouvez le faire en préparant une fonction de filtrage comme indiqué ci-dessous et setStackTrace dans le constructeur. Le nom du package est une chaîne telle que com.wrongwrong.example qui spécifie le package racine.

public class MyException extends RuntimeException {
    static StackTraceElement[] filteringStackTrace(StackTraceElement[] elements) {
        return Arrays.stream(elements)
                .filter(it -> it.getClassName().startsWith("${nom du paquet}"))
                .toArray(StackTraceElement[]::new);
    }

    public MyException(String msg) {
        super(msg);
        setStackTrace(filteringStackTrace(getStackTrace()));
    }
}

Recommended Posts

[Java] Filtrer les traces de pile
[Java] Filtre de servlet
[Java] Créer un filtre
[Java] Zone de pile et zone statique
Journal de trace de pile Java NullPointerException
[Java] Stream (filtrer, mapper, forEach, réduire)
[Java] Collection-List / Set / Map / Stack / Queue
Mécanisme de référence Java (pile et tas)
Java
Java
Comment implémenter le filtre de Kalman par Java
Obtenir des informations sur l'appelant à partir de la trace de la pile (Java)
Filtre Sobel utilisant OpenCV sur Android (Java)
Implémenter quelque chose comme une pile en Java