Changed design slightly to only defer message contents encoding

This commit is contained in:
Collin Smith 2020-08-26 11:31:22 -07:00
parent 2c9ca02f27
commit 8bb866d3b3
2 changed files with 28 additions and 14 deletions

View File

@ -1,16 +1,21 @@
package com.riiablo.logger;
import java.io.OutputStream;
import org.apache.commons.lang3.exception.ExceptionUtils;
public class RiiabloEncoder extends SimpleEncoder {
private final StringBuilder buffer = new StringBuilder(1024);
@Override
public void encode(LogEvent event, OutputStream out) {
encodeMessage(event, out);
}
private void encodeMessage(LogEvent event, OutputStream out) {
super.encode(event, out);
try {
encodeMessage(event, buffer);
out.write(buffer.toString().getBytes(US_ASCII));
newLine(out);
} catch (Throwable t) {
ExceptionUtils.rethrow(t);
} finally {
buffer.setLength(0);
}
}
}

View File

@ -1,5 +1,6 @@
package com.riiablo.logger;
import java.io.IOException;
import java.io.OutputStream;
import java.nio.charset.Charset;
import org.apache.commons.lang3.ClassUtils;
@ -15,20 +16,28 @@ public class SimpleEncoder implements Encoder {
@Override
public void encode(LogEvent event, OutputStream out) {
try {
buffer.append(StringUtils.rightPad(event.level().name(), 5));
buffer.append(' ');
buffer.append('[');
buffer.append(ClassUtils.getShortClassName(event.source().getClassName()));
buffer.append(']');
buffer.append(' ');
buffer.append(event.message().format());
encodeMessage(event, buffer);
out.write(buffer.toString().getBytes(US_ASCII));
out.write(newLine);
out.flush();
newLine(out);
} catch (Throwable t) {
ExceptionUtils.rethrow(t);
} finally {
buffer.setLength(0);
}
}
protected void newLine(OutputStream out) throws IOException {
out.write(newLine);
out.flush();
}
protected void encodeMessage(LogEvent event, StringBuilder buffer) {
buffer.append(StringUtils.rightPad(event.level().name(), 5));
buffer.append(' ');
buffer.append('[');
buffer.append(ClassUtils.getShortClassName(event.source().getClassName()));
buffer.append(']');
buffer.append(' ');
buffer.append(event.message().format());
}
}