Changed responsibility chain s.t. RiiabloEncoder defers to SimpleEncoder for message content

This commit is contained in:
Collin Smith
2020-08-26 11:20:28 -07:00
parent 85b57a7ed0
commit 2c9ca02f27
2 changed files with 19 additions and 20 deletions

View File

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

View File

@ -2,20 +2,33 @@ package com.riiablo.logger;
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.StringUtils;
import org.apache.commons.lang3.exception.ExceptionUtils; import org.apache.commons.lang3.exception.ExceptionUtils;
public class SimpleEncoder implements Encoder { public class SimpleEncoder implements Encoder {
static final Charset US_ASCII = Charset.forName("US-ASCII"); static final Charset US_ASCII = Charset.forName("US-ASCII");
final byte[] newLine = System.getProperty("line.separator").getBytes(US_ASCII); final byte[] newLine = System.getProperty("line.separator").getBytes(US_ASCII);
private final StringBuilder buffer = new StringBuilder(1024);
@Override @Override
public void encode(LogEvent event, OutputStream out) { public void encode(LogEvent event, OutputStream out) {
try { try {
out.write(event.message().format().getBytes(US_ASCII)); 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());
out.write(buffer.toString().getBytes(US_ASCII));
out.write(newLine); out.write(newLine);
out.flush(); out.flush();
} catch (Throwable t) { } catch (Throwable t) {
ExceptionUtils.rethrow(t); ExceptionUtils.rethrow(t);
} finally {
buffer.setLength(0);
} }
} }
} }