From 1b58cdeb3cfc259d3a47dc03cc51acef3a43c4f7 Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Wed, 15 Nov 2023 08:49:04 -0600 Subject: [PATCH] Move packagesToKeep to a system-property/env-var --- .../qqq/backend/core/logging/LogUtils.java | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/logging/LogUtils.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/logging/LogUtils.java index 6fe84825..57c0331f 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/logging/LogUtils.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/logging/LogUtils.java @@ -26,6 +26,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; +import com.kingsrook.qqq.backend.core.instances.QMetaDataVariableInterpreter; import com.kingsrook.qqq.backend.core.utils.lambdas.UnsafeSupplier; @@ -34,6 +35,17 @@ import com.kingsrook.qqq.backend.core.utils.lambdas.UnsafeSupplier; *******************************************************************************/ public class LogUtils { + /////////////////////////////////////////////////////////////////////////////////////////////// + // This string will be used in regex, inside ()'s, so you can supply pipe-delimited packages // + // as in, com.kingsrook|com.yourdomain|org.some.other.package // + /////////////////////////////////////////////////////////////////////////////////////////////// + private static String packagesToKeep = "."; + + static + { + packagesToKeep = new QMetaDataVariableInterpreter().getStringFromPropertyOrEnvironment("qqq.logger.packagesToKeep", "QQQ_LOGGER_PACKAGES_TO_KEEP", "."); + } + /******************************************************************************* ** @@ -118,9 +130,8 @@ public class LogUtils { try { - String packagesToKeep = "com.kingsrook|com.coldtrack"; // todo - parameterize!! - StringBuilder rs = new StringBuilder(); - String[] lines = stackTrace.split("\n"); + StringBuilder rs = new StringBuilder(); + String[] lines = stackTrace.split("\n"); int indexWithinSubStack = 0; int skipsInThisPackage = 0; @@ -134,7 +145,13 @@ public class LogUtils { keepLine = false; indexWithinSubStack++; - if(line.matches("^\\s+at (" + packagesToKeep + ").*")) + + ///////////////////////////////////////////////////////////////////////////// + // avoid NPE on packages to keep (and keep all packages) // + // also, avoid the regex call if it's the default of "." (e.g., match all) // + // otherwise, check if the line matches "at (packagesToKeep).*" // + ///////////////////////////////////////////////////////////////////////////// + if(packagesToKeep == null || ".".equals(packagesToKeep) || line.matches("^\\s+at (" + packagesToKeep + ").*")) { keepLine = true; }