diff --git a/pom.xml b/pom.xml
index 3f637bb..8c8d0fc 100644
--- a/pom.xml
+++ b/pom.xml
@@ -31,7 +31,7 @@
io.github.elf4j
elf4j-engine
- 10.0.1
+ 10.0.2
jar
elf4j-engine
A stand-alone Java log engine implementing the ELF4J (Easy Logging Facade for Java) API
diff --git a/src/main/java/elf4j/engine/service/writer/BufferedStandardOutput.java b/src/main/java/elf4j/engine/service/writer/BufferedStandardOutput.java
index afb92e2..01495de 100644
--- a/src/main/java/elf4j/engine/service/writer/BufferedStandardOutput.java
+++ b/src/main/java/elf4j/engine/service/writer/BufferedStandardOutput.java
@@ -25,8 +25,6 @@
package elf4j.engine.service.writer;
-import elf4j.engine.service.LogServiceManager;
-import elf4j.engine.service.Stoppable;
import elf4j.engine.service.configuration.LogServiceConfiguration;
import lombok.NonNull;
import lombok.ToString;
@@ -38,11 +36,10 @@
*
*/
@ToString
-public class BufferedStandardOutput implements StandardOutput, Stoppable {
+public class BufferedStandardOutput implements StandardOutput {
private static final OutStreamType DEFAULT_OUT_STREAM_TYPE = OutStreamType.STDOUT;
@NonNull private final OutStreamType outStreamType;
- private final BufferedOutStream bufferedOutStream = new BufferedOutStream();
- private boolean closed;
+ private final BufferedStandardOutStreams bufferedStandardOutStreams = new BufferedStandardOutStreams();
/**
* @param outStreamType
@@ -50,7 +47,6 @@ public class BufferedStandardOutput implements StandardOutput, Stoppable {
*/
private BufferedStandardOutput(@NonNull OutStreamType outStreamType) {
this.outStreamType = outStreamType;
- LogServiceManager.INSTANCE.registerStop(this);
}
/**
@@ -68,60 +64,43 @@ private BufferedStandardOutput(@NonNull OutStreamType outStreamType) {
@Override
public void write(byte[] bytes) {
if (this.outStreamType == OutStreamType.STDERR) {
- bufferedOutStream.err(bytes);
+ bufferedStandardOutStreams.err(bytes);
} else {
- bufferedOutStream.out(bytes);
+ bufferedStandardOutStreams.out(bytes);
}
}
- @Override
- public void stop() {
- this.closed = true;
- this.bufferedOutStream.close();
- }
-
- @Override
- public boolean isStopped() {
- return this.closed;
- }
-
enum OutStreamType {
STDOUT,
STDERR
}
- static class BufferedOutStream implements Closeable {
+ static class BufferedStandardOutStreams {
final OutputStream bufferedStdOut = new BufferedOutputStream(new FileOutputStream(FileDescriptor.out), 2048);
final OutputStream bufferedStdErr = new BufferedOutputStream(new FileOutputStream(FileDescriptor.err), 2048);
- BufferedOutStream() {
- }
-
- @Override
- public void close() {
- try (OutputStream out = bufferedStdOut; OutputStream err = bufferedStdErr) {
- out.flush();
- err.flush();
- } catch (IOException e) {
- throw new UncheckedIOException(e);
- }
+ BufferedStandardOutStreams() {
}
- synchronized void err(byte[] bytes) {
- try {
- bufferedStdErr.write(bytes);
- bufferedStdErr.flush();
- } catch (IOException e) {
- throw new UncheckedIOException(e);
+ void err(byte[] bytes) {
+ synchronized (System.err) {
+ try {
+ bufferedStdErr.write(bytes);
+ bufferedStdErr.flush();
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
}
}
- synchronized void out(byte[] bytes) {
- try {
- bufferedStdOut.write(bytes);
- bufferedStdOut.flush();
- } catch (IOException e) {
- throw new UncheckedIOException(e);
+ void out(byte[] bytes) {
+ synchronized (System.out) {
+ try {
+ bufferedStdOut.write(bytes);
+ bufferedStdOut.flush();
+ } catch (IOException e) {
+ throw new UncheckedIOException(e);
+ }
}
}
}