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

View File

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