@Override public String doLayout(ILoggingEvent event) { if (!isStarted()) { return CoreConstants.EMPTY_STRING; } StringBuilder sb = new StringBuilder(); long timestamp = event.getTimeStamp(); sb.append(cachingDateFormatter.format(timestamp)); sb.append(" ["); sb.append(event.getThreadName()); sb.append("] "); sb.append(event.getLevel().toString()); sb.append(" "); sb.append(event.getLoggerName()); sb.append(" - "); sb.append(event.getFormattedMessage()); sb.append(CoreConstants.LINE_SEPARATOR); IThrowableProxy tp = event.getThrowableProxy(); if (tp != null) { String stackTrace = tpc.convert(event); sb.append(stackTrace); } return sb.toString(); }
errorCount++; if (errorCount < CoreConstants.MAX_ERROR_COUNT) { addError("Exception thrown for evaluator named [" + ee.getName() + "]", eex); } else if (errorCount == CoreConstants.MAX_ERROR_COUNT) { ErrorStatus errorStatus = new ErrorStatus("Exception thrown for evaluator named [" + ee.getName() + "].", this, eex); errorStatus.add(new ErrorStatus("This was the last warning about this evaluator's errors." + "We don't want the StatusManager to get flooded.", this)); addStatus(errorStatus); return throwableProxyToString(tp);
@Override public void start() { tpc.start(); super.start(); }
private void printStackLine(StringBuilder buf, int ignoredCount, StackTraceElementProxy element) { buf.append(element); extraData(buf, element); // allow other data to be added if (ignoredCount > 0) { printIgnoredCount(buf, ignoredCount); } }
@SuppressWarnings("unchecked") public void start() { String lengthStr = getFirstOption(); lengthOption = Integer.parseInt(lengthStr); } catch (NumberFormatException nfe) { addError("Could not parse [" + lengthStr + "] as an integer"); lengthOption = Integer.MAX_VALUE; final List<String> optionList = getOptionList(); for (int i = 1; i < optionListSize; i++) { String evaluatorOrIgnoredStackTraceLine = (String) optionList.get(i); Context context = getContext(); Map<String, EventEvaluator<?>> evaluatorMap = (Map<String, EventEvaluator<?>>) context.getObject(CoreConstants.EVALUATOR_MAP); EventEvaluator<ILoggingEvent> ee = (EventEvaluator<ILoggingEvent>) evaluatorMap.get(evaluatorOrIgnoredStackTraceLine); if (ee != null) { addEvaluator(ee); } else { addIgnoreStackTraceLine(evaluatorOrIgnoredStackTraceLine);
@Test public void withShortArgument() throws Exception { final Throwable t = TestHelper.makeNestedException(0); t.printStackTrace(pw); final ILoggingEvent le = createLoggingEvent(t); final List<String> options = Arrays.asList("short"); tpc.setOptionList(options); tpc.start(); final String result = tpc.convert(le); final BufferedReader reader = new BufferedReader(new StringReader(result)); assertTrue(reader.readLine().contains(t.getMessage())); assertNotNull(reader.readLine()); assertNull("Unexpected line in stack trace", reader.readLine()); }
@Override protected String throwableProxyToString(IThrowableProxy tp) { return CoreConstants.LINE_SEPARATOR + super.throwableProxyToString(tp) + CoreConstants.LINE_SEPARATOR; }
errorCount++; if (errorCount < MAX_ERROR_COUNT) { addError("Exception thrown for evaluator named [" + ee.getName() + "]", eex); } else if (errorCount == MAX_ERROR_COUNT) { "This was the last warning about this evaluator's errors." + "We don't want the StatusManager to get flooded.", this)); addStatus(errorStatus); printThrowableProxy(buf, tp); tp = tp.getCause();
@Before public void setUp() throws Exception { converter.setContext(context); converter.start(); }
protected void subjoinSTEPArray(StringBuilder buf, int indent, IThrowableProxy tp) { StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray(); int commonFrames = tp.getCommonFrames(); boolean unrestrictedPrinting = lengthOption > stepArray.length; int maxIndex = (unrestrictedPrinting) ? stepArray.length : lengthOption; if (commonFrames > 0 && unrestrictedPrinting) { maxIndex -= commonFrames; } for (int i = 0; i < maxIndex; i++) { ThrowableProxyUtil.indent(buf, indent); buf.append(stepArray[i]); extraData(buf, stepArray[i]); // allow other data to be added buf.append(CoreConstants.LINE_SEPARATOR); } if (commonFrames > 0 && unrestrictedPrinting) { ThrowableProxyUtil.indent(buf, indent); buf.append("... ").append(tp.getCommonFrames()).append( " common frames omitted").append(CoreConstants.LINE_SEPARATOR); } } }
@SuppressWarnings("unchecked") public void start() { String lengthStr = getFirstOption(); lengthOption = Integer.parseInt(lengthStr); } catch (NumberFormatException nfe) { addError("Could not parse [" + lengthStr + "] as an integer"); lengthOption = Integer.MAX_VALUE; final List optionList = getOptionList(); for (int i = 1; i < optionListSize; i++) { String evaluatorStr = (String) optionList.get(i); Context context = getContext(); Map evaluatorMap = (Map) context.getObject(CoreConstants.EVALUATOR_MAP); EventEvaluator<ILoggingEvent> ee = (EventEvaluator<ILoggingEvent>) evaluatorMap .get(evaluatorStr); addEvaluator(ee);
@Test public void withArgumentOfOne() throws Exception { final Throwable t = TestHelper.makeNestedException(0); t.printStackTrace(pw); final ILoggingEvent le = createLoggingEvent(t); final List<String> optionList = Arrays.asList("1"); tpc.setOptionList(optionList); tpc.start(); final String result = tpc.convert(le); final BufferedReader reader = new BufferedReader(new StringReader(result)); assertTrue(reader.readLine().contains(t.getMessage())); assertNotNull(reader.readLine()); assertNull("Unexpected line in stack trace", reader.readLine()); }
private void printStackLine(StringBuilder buf, int ignoredCount, StackTraceElementProxy element) { buf.append(element); extraData(buf, element); // allow other data to be added if (ignoredCount > 0) { printIgnoredCount(buf, ignoredCount); } }
@Override protected String throwableProxyToString(IThrowableProxy tp) { return PATTERN.matcher(super.throwableProxyToString(tp)).replaceAll(PREFIX); } }
@Before public void setUp() throws Exception { tpc.setContext(lc); tpc.start(); }
void subjoinThrowableProxy(StringBuilder buf, IThrowableProxy tp) { ThrowableProxyUtil.subjoinFirstLine(buf, tp); buf.append(CoreConstants.LINE_SEPARATOR); StackTraceElementProxy[] stepArray = tp.getStackTraceElementProxyArray(); int commonFrames = tp.getCommonFrames(); boolean unrestrictedPrinting = lengthOption > stepArray.length; int maxIndex = (unrestrictedPrinting) ? stepArray.length : lengthOption; if (commonFrames > 0 && unrestrictedPrinting) { maxIndex -= commonFrames; } for (int i = 0; i < maxIndex; i++) { String string = stepArray[i].toString(); buf.append(CoreConstants.TAB); buf.append(string); extraData(buf, stepArray[i]); // allow other data to be added buf.append(CoreConstants.LINE_SEPARATOR); } if (commonFrames > 0 && unrestrictedPrinting) { buf.append("\t... ").append(tp.getCommonFrames()).append( " common frames omitted").append(CoreConstants.LINE_SEPARATOR); } } }
@SuppressWarnings("unchecked") public void start() { String lengthStr = getFirstOption(); lengthOption = Integer.parseInt(lengthStr); } catch (NumberFormatException nfe) { addError("Could not parse [" + lengthStr + "] as an integer"); lengthOption = Integer.MAX_VALUE; final List<String> optionList = getOptionList(); for (int i = 1; i < optionListSize; i++) { String evaluatorOrIgnoredStackTraceLine = (String) optionList.get(i); Context context = getContext(); Map<String, EventEvaluator<?>> evaluatorMap = (Map<String, EventEvaluator<?>>) context.getObject(CoreConstants.EVALUATOR_MAP); EventEvaluator<ILoggingEvent> ee = (EventEvaluator<ILoggingEvent>) evaluatorMap.get(evaluatorOrIgnoredStackTraceLine); if (ee != null) { addEvaluator(ee); } else { addIgnoreStackTraceLine(evaluatorOrIgnoredStackTraceLine);
errorCount++; if (errorCount < CoreConstants.MAX_ERROR_COUNT) { addError("Exception thrown for evaluator named [" + ee.getName() + "]", eex); } else if (errorCount == CoreConstants.MAX_ERROR_COUNT) { "This was the last warning about this evaluator's errors." + "We don't want the StatusManager to get flooded.", this)); addStatus(errorStatus); return throwableProxyToString(tp);
@Test public void shouldLimitTotalLinesExcludingSkipped() throws Exception { //given final Throwable t = TestHelper.makeNestedException(0); t.printStackTrace(pw); final ILoggingEvent le = createLoggingEvent(t); tpc.setOptionList(Arrays.asList("3", "shouldLimitTotalLinesExcludingSkipped")); tpc.start(); //when final String result = tpc.convert(le); //then String[] lines = result.split(CoreConstants.LINE_SEPARATOR); assertThat(lines, Matchers.<String>arrayWithSize(3 + 1)); }
@Override public String convert(ILoggingEvent event) { if (SCHEMA_SPY_LOGGER.isDebugEnabled()) return super.convert(event); omittedStackTrace.set(true); if (Objects.nonNull(event.getThrowableProxy())) { return event.getThrowableProxy().getMessage() + CoreConstants.LINE_SEPARATOR; } return CoreConstants.EMPTY_STRING; }