protected void setOutputStream(final OutputStream os) { final byte[] header = layout.getHeader(); if (header != null) { try { os.write(header, 0, header.length); this.outputStream = os; // only update field if os.write() succeeded } catch (final IOException ioe) { logError("Unable to write header", ioe); } } else { this.outputStream = os; } }
protected synchronized boolean closeOutputStream() { flush(); final OutputStream stream = outputStream; // access volatile field only once per method if (stream == null || stream == System.out || stream == System.err) { return true; } try { stream.close(); } catch (final IOException ex) { logError("Unable to close stream", ex); return false; } return true; }
/** * @since 2.6 * @deprecated */ @Deprecated protected OutputStreamManager(final OutputStream os, final String streamName, final Layout<?> layout, final boolean writeHeader, final ByteBuffer byteBuffer) { super(null, streamName); this.outputStream = os; this.layout = layout; if (writeHeader && layout != null) { final byte[] header = layout.getHeader(); if (header != null) { try { getOutputStream().write(header, 0, header.length); } catch (final IOException e) { logError("Unable to write header", e); } } } this.byteBuffer = Objects.requireNonNull(byteBuffer, "byteBuffer"); }
/** * @since 2.7 */ protected OutputStreamManager(final LoggerContext loggerContext, final OutputStream os, final String streamName, final boolean createOnDemand, final Layout<? extends Serializable> layout, final boolean writeHeader, final ByteBuffer byteBuffer) { super(loggerContext, streamName); if (createOnDemand && os != null) { LOGGER.error( "Invalid OutputStreamManager configuration for '{}': You cannot both set the OutputStream and request on-demand.", streamName); } this.layout = layout; this.byteBuffer = Objects.requireNonNull(byteBuffer, "byteBuffer"); this.outputStream = os; if (writeHeader && layout != null) { final byte[] header = layout.getHeader(); if (header != null) { try { getOutputStream().write(header, 0, header.length); } catch (final IOException e) { logError("Unable to write header for " + streamName, e); } } } }