@Override public void format(LogEvent event, StringBuilder buffer) { if (event.getThrown() != null) { buffer.append(this.options.getSeparator()); super.format(event, buffer); buffer.append(this.options.getSeparator()); } }
@Test public void testShortLineNumber() { final String[] options = { "short.lineNumber" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final StackTraceElement top = parent.getStackTrace()[0]; final int expectedLineNumber = top.getLineNumber(); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertTrue("The line numbers should be same", expectedLineNumber == Integer.parseInt(result)); }
@Test public void testShortFileName() { final String[] options = { "short.fileName" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertEquals("The file names should be same", "ThrowablePatternConverterTest.java", result); }
@Test public void testShortMessage() { final String[] options = { "short.message" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertEquals("The messages should be same", "IllegalArgument", result); }
@Test public void testShortMethodName() { final String[] options = { "short.methodName" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertEquals("The method names should be same", "testShortMethodName", result); }
@Test public void testShortClassName() { final String packageName = "org.apache.logging.log4j.core.pattern."; final String[] options = { "short.className" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertEquals("The class names should be same", packageName + "ThrowablePatternConverterTest", result); }
@Test public void testShortOptionWithSuffix() { final String packageName = "org.apache.logging.log4j.core.pattern."; final String[] options = { "short.className", "suffix(test suffix)" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable cause = new NullPointerException("null pointer"); final Throwable parent = new IllegalArgumentException("IllegalArgument", cause); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertTrue("Each line should end with suffix", everyLineEndsWith(result, "test suffix")); }
@Test public void testFull() { final String[] options = { "full" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); Throwable parent; try { try { throw new NullPointerException("null pointer"); } catch (final NullPointerException e) { throw new IllegalArgumentException("IllegalArgument", e); } } catch (final IllegalArgumentException e) { parent = e; } final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); // System.out.print(result); assertTrue("Incorrect start of msg", result.startsWith("java.lang.IllegalArgumentException: IllegalArgument")); assertTrue("Missing nested exception", result.contains("java.lang.NullPointerException: null pointer")); }
@Test public void testFullWithSuffix() { final String[] options = { "full", "suffix(test suffix)" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); Throwable parent; try { try { throw new NullPointerException("null pointer"); } catch (final NullPointerException e) { throw new IllegalArgumentException("IllegalArgument", e); } } catch (final IllegalArgumentException e) { parent = e; } final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertTrue("Each line of full stack trace should end with the specified suffix", everyLineEndsWith(result, "test suffix")); }
@Test public void testShortLocalizedMessage() { final String[] options = { "short.localizedMessage" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(null, options); final Throwable parent = new LocalizedException(); final LogEvent event = Log4jLogEvent.newBuilder() // .setLoggerName("testLogger") // .setLoggerFqcn(this.getClass().getName()) // .setLevel(Level.DEBUG) // .setMessage(new SimpleMessage("test exception")) // .setThrown(parent).build(); final StringBuilder sb = new StringBuilder(); converter.format(event, sb); final String result = sb.toString(); assertEquals("The messages should be same", "I am localized.", result); }
private void createStackTraceEvent(final JSONObject logstashEvent, final LogEvent loggingEvent) { if (loggingEvent.getThrown().getStackTrace() != null) { final String[] options = { "full" }; final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options); final StringBuilder sb = new StringBuilder(); converter.format(loggingEvent, sb); final String stackTrace = sb.toString(); logstashEvent.put(LayoutFields.STACK_TRACE, stackTrace); } } }
if ((throwable != null || proxy != null) && options.anyLines()) { if (proxy == null) { super.format(event, toAppendTo); return;
if (throwable != null && options.anyLines()) { if (proxy == null) { super.format(event, toAppendTo); return;