@Override public void write(final byte[] b, final int off, final int len) { assert b != null; assert off > -1; assert len > -1; synchronized (this) { // if we are on a new line, then print the prefix if (newline) { String result = prefixer.prefix(new String(b, off, len)); // Null result means don't write the prefix if (result != null) { byte[] prefix = result.getBytes(); super.write(prefix, 0, prefix.length); } newline = false; } super.write(b, off, len); } // Check if there is a new line in the given string to reset the newline flag for (int i=off; i<len; i++) { if (b[i] == '\n') { synchronized (this) { newline = true; } break; } } }