mirror of
https://github.com/Kingsrook/qqq.git
synced 2025-07-18 13:10:44 +00:00
add filterStackTrace; move unsafeSupplier
This commit is contained in:
@ -26,6 +26,7 @@ import java.util.Arrays;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
import com.kingsrook.qqq.backend.core.utils.lambdas.UnsafeSupplier;
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
@ -75,6 +76,23 @@ public class LogUtils
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/*******************************************************************************
|
||||||
|
**
|
||||||
|
*******************************************************************************/
|
||||||
|
public static LogPair logPair(String key, UnsafeSupplier<Object, Exception> valueSupplier)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
return (new LogPair(key, valueSupplier.get()));
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
return (new LogPair(key, "exceptionLoggingValue: " + e.getMessage()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@ -88,13 +106,84 @@ public class LogUtils
|
|||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
**
|
**
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
@FunctionalInterface
|
static String filterStackTrace(String stackTrace)
|
||||||
public interface UnsafeSupplier
|
|
||||||
{
|
{
|
||||||
/*******************************************************************************
|
try
|
||||||
**
|
{
|
||||||
*******************************************************************************/
|
String packagesToKeep = "com.kingsrook|com.nutrifresh"; // todo - parameterize!!
|
||||||
Object get() throws Exception;
|
StringBuilder rs = new StringBuilder();
|
||||||
}
|
String[] lines = stackTrace.split("\n");
|
||||||
|
|
||||||
|
int indexWithinSubStack = 0;
|
||||||
|
int skipsInThisPackage = 0;
|
||||||
|
String packageBeingSkipped = null;
|
||||||
|
|
||||||
|
for(String line : lines)
|
||||||
|
{
|
||||||
|
boolean keepLine = true;
|
||||||
|
|
||||||
|
if(line.matches("^\\s+at .*"))
|
||||||
|
{
|
||||||
|
keepLine = false;
|
||||||
|
indexWithinSubStack++;
|
||||||
|
if(line.matches("^\\s+at (" + packagesToKeep + ").*"))
|
||||||
|
{
|
||||||
|
keepLine = true;
|
||||||
|
}
|
||||||
|
if(indexWithinSubStack == 1)
|
||||||
|
{
|
||||||
|
keepLine = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
indexWithinSubStack = 0;
|
||||||
|
|
||||||
|
if(skipsInThisPackage > 0)
|
||||||
|
{
|
||||||
|
rs.append("\t... ").append(skipsInThisPackage).append(" in ").append(packageBeingSkipped).append("\n");
|
||||||
|
skipsInThisPackage = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(keepLine)
|
||||||
|
{
|
||||||
|
rs.append(line).append("\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
String thisPackage = line.replaceFirst("\\s+at ", "").replaceFirst("(\\w+\\.\\w+).*", "$1");
|
||||||
|
if(Objects.equals(thisPackage, packageBeingSkipped))
|
||||||
|
{
|
||||||
|
skipsInThisPackage++;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(skipsInThisPackage > 0)
|
||||||
|
{
|
||||||
|
rs.append("\t... ").append(skipsInThisPackage).append(" in ").append(packageBeingSkipped).append("\n");
|
||||||
|
}
|
||||||
|
skipsInThisPackage = 1;
|
||||||
|
}
|
||||||
|
packageBeingSkipped = thisPackage;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(rs.length() > 0)
|
||||||
|
{
|
||||||
|
rs.deleteCharAt(rs.length() - 1);
|
||||||
|
}
|
||||||
|
|
||||||
|
return (rs.toString());
|
||||||
|
}
|
||||||
|
catch(Exception e)
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
|
///////////////////////////////////////////////
|
||||||
|
// upon any exception, just return the input //
|
||||||
|
///////////////////////////////////////////////
|
||||||
|
return (stackTrace);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user