Created
March 28, 2025 12:51
-
-
Save JohnMeyerhoff/8e069290492058af2e472db28b353720 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| package org.relevantpackagename.controller.util; | |
| import org.slf4j.Logger; | |
| import org.slf4j.LoggerFactory; | |
| /** | |
| * This class is used to print the relevant stack trace. | |
| * | |
| * <p>Configure by setting {@link #PACKAGENAME} to the package name you want to focus on. | |
| * | |
| * <p>This is useful for debugging purposes. | |
| * | |
| * @author John Meyerhoff | |
| */ | |
| public class StackFocus { | |
| private static final CharSequence PACKAGENAME = "org.relevantpackagename"; | |
| private StackFocus() { | |
| throw new IllegalStateException("Utility class"); | |
| } | |
| public static void printRelevantStack() { | |
| StackTraceElement[] stackTraceElements = Thread.currentThread().getStackTrace(); | |
| Logger logger = LoggerFactory.getLogger(StackFocus.class); | |
| filterStackTrace(stackTraceElements, logger::info); | |
| } | |
| public static void filterStackTrace(StackTraceElement[] stackTraceElements, boolean warn) { | |
| Logger logger = LoggerFactory.getLogger(StackFocus.class); | |
| filterStackTrace(stackTraceElements, warn ? logger::warn : logger::info); | |
| } | |
| private static void filterStackTrace( | |
| StackTraceElement[] stackTraceElements, java.util.function.BiConsumer<String, Object> log) { | |
| log.accept("Relevant stack:\n", null); | |
| for (int i = 1; i < stackTraceElements.length; i++) { | |
| StackTraceElement stackTraceElement = stackTraceElements[i]; | |
| if (stackTraceElement.getClassName().contains(PACKAGENAME)) { | |
| log.accept(i + ": {}", stackTraceElement); | |
| } | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment