use of org.spf4j.io.ObjectAppender in project spf4j by zolyfarkas.
the class LogPrinter method printObject.
private static void printObject(@Nullable final Object obj, final Appendable wr, final EscapeJsonStringAppendableWrapper wrapper) throws IOException {
if (obj == null) {
wr.append("null");
} else {
ObjectAppender ostrApp = TO_STRINGER.apply(obj.getClass());
MimeType type = ostrApp.getAppendedType();
if ("json".equalsIgnoreCase(type.getSubType())) {
ostrApp.append(obj, wr);
} else {
wr.append('"');
ostrApp.append(obj, wrapper);
wr.append('"');
}
}
}
use of org.spf4j.io.ObjectAppender in project spf4j by zolyfarkas.
the class Slf4jMessageFormatterTest method testFormatter2.
@Test
public void testFormatter2() throws IOException {
ConfigurableAppenderSupplier appSupp = new ConfigurableAppenderSupplier();
LOG.debug("ConfAppenderSupp = {}", appSupp);
StringBuilder sb = new StringBuilder();
final long currentTimeMillis = System.currentTimeMillis();
Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, new java.sql.Date(currentTimeMillis));
Assert.assertEquals("bla bla " + DateTimeFormats.DT_FORMAT.format(Instant.now()), sb.toString());
sb.setLength(0);
Method method = new Method("c1", "m1");
int written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, method);
Assert.assertEquals("bla bla {\"declaringClass\":\"c1\",\"name\":\"m1\"}", sb.toString());
Assert.assertEquals(1, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(1, sb, "bla bla {}", appSupp, "ifff", method);
Assert.assertEquals("bla bla {\"declaringClass\":\"c1\",\"name\":\"m1\"}", sb.toString());
Assert.assertEquals(2, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, method, "yohooo");
LOG.debug("formatted message: {}", sb);
Assert.assertEquals(1, written);
sb.setLength(0);
written = Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp);
LOG.debug("formatted message: {}", sb);
Assert.assertEquals(0, written);
sb.setLength(0);
EscapeJsonStringAppendableWrapper escaper = new EscapeJsonStringAppendableWrapper(sb);
Slf4jMessageFormatter.format(escaper, "bla bla {} {}", appSupp, "\n\u2013\u0010", new int[] { 1, 2, 3 });
LOG.debug("formatted message: {}", sb);
Assert.assertEquals("bla bla \\n–\\u0010 [1, 2, 3]", sb.toString());
appSupp.replace(CoreTextMediaType.TEXT_PLAIN, String.class, (final ObjectAppender<? super String> input) -> new ObjectAppender<String>() {
@Override
public void append(final String object, final Appendable appendTo) throws IOException {
try (AppendableLimiterWithOverflow limiter = new AppendableLimiterWithOverflow(90, File.createTempFile("string", ".overflow"), "...@", StandardCharsets.UTF_8, appendTo)) {
limiter.append(object);
}
}
});
sb.setLength(0);
Slf4jMessageFormatter.format(sb, "bla bla {}", appSupp, "012345678901234567890123456789012345678901234567" + "89012345678901234567890123456789012345678901234567890123456789");
LOG.debug("formatted message: {}", sb);
Assert.assertThat(sb.toString(), Matchers.containsString("...@"));
}
use of org.spf4j.io.ObjectAppender in project spf4j by zolyfarkas.
the class LogPrinter method printJsonObject.
/**
* Function that will write the Object as a json representation.
* If json appender not available a json string value will be written.
* @param obj
* @param wr
* @param wrapper
* @throws IOException
*/
private void printJsonObject(@Nullable final Object obj, final BufferedAppendable app) throws IOException {
if (obj == null) {
app.getAppendable().append("null");
} else {
ObjectAppender ostrApp = toStringer.get(CoreTextMediaType.APPLICATION_JSON, obj.getClass());
if (ostrApp != null) {
int currentPos = app.getCurrentPos();
try {
ostrApp.append(obj, app.getAppendable(), toStringer);
return;
} catch (IOException | RuntimeException e) {
app.resetPos(currentPos);
}
}
Appendable wr = app.getAppendable();
Appendable wrapper = app.getJsonStringEscapingAppendable();
ostrApp = toStringer.get(CoreTextMediaType.TEXT_PLAIN, obj.getClass());
wr.append('"');
int currentPos = app.getCurrentPos();
try {
ostrApp.append(obj, wrapper, toStringer);
} catch (IOException | RuntimeException e) {
app.resetPos(currentPos);
exHandle(obj, wrapper, e);
}
wr.append('"');
}
}
Aggregations