/*
 * Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */
package java.rmi.server;

import java.io.*;
import java.util.*;

LogStream provides a mechanism for logging errors that are of possible interest to those monitoring a system.
Author: Ann Wollrath (lots of code stolen from Ken Arnold)
Since: 1.1
Deprecated:no replacement
/** * <code>LogStream</code> provides a mechanism for logging errors that are * of possible interest to those monitoring a system. * * @author Ann Wollrath (lots of code stolen from Ken Arnold) * @since 1.1 * @deprecated no replacement */
@Deprecated public class LogStream extends PrintStream {
table mapping known log names to log stream objects
/** table mapping known log names to log stream objects */
private static Map<String,LogStream> known = new HashMap<>(5);
default output stream for new logs
/** default output stream for new logs */
private static PrintStream defaultStream = System.err;
log name for this log
/** log name for this log */
private String name;
stream where output of this log is sent to
/** stream where output of this log is sent to */
private OutputStream logOut;
string writer for writing message prefixes to log stream
/** string writer for writing message prefixes to log stream */
private OutputStreamWriter logWriter;
string buffer used for constructing log message prefixes
/** string buffer used for constructing log message prefixes */
private StringBuffer buffer = new StringBuffer();
stream used for buffering lines
/** stream used for buffering lines */
private ByteArrayOutputStream bufOut;
Create a new LogStream object. Since this only constructor is private, users must have a LogStream created through the "log" method.
Params:
  • name – string identifying messages from this log
@outoutput stream that log messages will be sent to
Since:1.1
Deprecated:no replacement
/** * Create a new LogStream object. Since this only constructor is * private, users must have a LogStream created through the "log" * method. * @param name string identifying messages from this log * @out output stream that log messages will be sent to * @since 1.1 * @deprecated no replacement */
@Deprecated private LogStream(String name, OutputStream out) { super(new ByteArrayOutputStream()); bufOut = (ByteArrayOutputStream) super.out; this.name = name; setOutputStream(out); }
Return the LogStream identified by the given name. If a log corresponding to "name" does not exist, a log using the default stream is created.
Params:
  • name – name identifying the desired LogStream
Returns:log associated with given name
Since:1.1
Deprecated:no replacement
/** * Return the LogStream identified by the given name. If * a log corresponding to "name" does not exist, a log using * the default stream is created. * @param name name identifying the desired LogStream * @return log associated with given name * @since 1.1 * @deprecated no replacement */
@Deprecated public static LogStream log(String name) { LogStream stream; synchronized (known) { stream = known.get(name); if (stream == null) { stream = new LogStream(name, defaultStream); } known.put(name, stream); } return stream; }
Return the current default stream for new logs.
See Also:
Returns:default log stream
Since:1.1
Deprecated:no replacement
/** * Return the current default stream for new logs. * @return default log stream * @see #setDefaultStream * @since 1.1 * @deprecated no replacement */
@Deprecated public static synchronized PrintStream getDefaultStream() { return defaultStream; }
Set the default stream for new logs.
Params:
  • newDefault – new default log stream
See Also:
Since:1.1
Deprecated:no replacement
/** * Set the default stream for new logs. * @param newDefault new default log stream * @see #getDefaultStream * @since 1.1 * @deprecated no replacement */
@Deprecated public static synchronized void setDefaultStream(PrintStream newDefault) { SecurityManager sm = System.getSecurityManager(); if (sm != null) { sm.checkPermission( new java.util.logging.LoggingPermission("control", null)); } defaultStream = newDefault; }
Return the current stream to which output from this log is sent.
See Also:
Returns:output stream for this log
Since:1.1
Deprecated:no replacement
/** * Return the current stream to which output from this log is sent. * @return output stream for this log * @see #setOutputStream * @since 1.1 * @deprecated no replacement */
@Deprecated public synchronized OutputStream getOutputStream() { return logOut; }
Set the stream to which output from this log is sent.
Params:
  • out – new output stream for this log
See Also:
Since:1.1
Deprecated:no replacement
/** * Set the stream to which output from this log is sent. * @param out new output stream for this log * @see #getOutputStream * @since 1.1 * @deprecated no replacement */
@Deprecated public synchronized void setOutputStream(OutputStream out) { logOut = out; // Maintain an OutputStreamWriter with default CharToByteConvertor // (just like new PrintStream) for writing log message prefixes. logWriter = new OutputStreamWriter(logOut); }
Write a byte of data to the stream. If it is not a newline, then the byte is appended to the internal buffer. If it is a newline, then the currently buffered line is sent to the log's output stream, prefixed with the appropriate logging information.
Since:1.1
Deprecated:no replacement
/** * Write a byte of data to the stream. If it is not a newline, then * the byte is appended to the internal buffer. If it is a newline, * then the currently buffered line is sent to the log's output * stream, prefixed with the appropriate logging information. * @since 1.1 * @deprecated no replacement */
@Deprecated public void write(int b) { if (b == '\n') { // synchronize on "this" first to avoid potential deadlock synchronized (this) { synchronized (logOut) { // construct prefix for log messages: buffer.setLength(0);; buffer.append( // date/time stamp... (new Date()).toString()); buffer.append(':'); buffer.append(name); // ...log name... buffer.append(':'); buffer.append(Thread.currentThread().getName()); buffer.append(':'); // ...and thread name try { // write prefix through to underlying byte stream logWriter.write(buffer.toString()); logWriter.flush(); // finally, write the already converted bytes of // the log message bufOut.writeTo(logOut); logOut.write(b); logOut.flush(); } catch (IOException e) { setError(); } finally { bufOut.reset(); } } } } else super.write(b); }
Write a subarray of bytes. Pass each through write byte method.
Since:1.1
Deprecated:no replacement
/** * Write a subarray of bytes. Pass each through write byte method. * @since 1.1 * @deprecated no replacement */
@Deprecated public void write(byte b[], int off, int len) { if (len < 0) throw new ArrayIndexOutOfBoundsException(len); for (int i = 0; i < len; ++ i) write(b[off + i]); }
Return log name as string representation.
Returns:log name
Since:1.1
Deprecated:no replacement
/** * Return log name as string representation. * @return log name * @since 1.1 * @deprecated no replacement */
@Deprecated public String toString() { return name; }
log level constant (no logging).
/** log level constant (no logging). */
public static final int SILENT = 0;
log level constant (brief logging).
/** log level constant (brief logging). */
public static final int BRIEF = 10;
log level constant (verbose logging).
/** log level constant (verbose logging). */
public static final int VERBOSE = 20;
Convert a string name of a logging level to its internal integer representation.
Params:
  • s – name of logging level (e.g., 'SILENT', 'BRIEF', 'VERBOSE')
Returns:corresponding integer log level
Since:1.1
Deprecated:no replacement
/** * Convert a string name of a logging level to its internal * integer representation. * @param s name of logging level (e.g., 'SILENT', 'BRIEF', 'VERBOSE') * @return corresponding integer log level * @since 1.1 * @deprecated no replacement */
@Deprecated public static int parseLevel(String s) { if ((s == null) || (s.length() < 1)) return -1; try { return Integer.parseInt(s); } catch (NumberFormatException e) { } if (s.length() < 1) return -1; if ("SILENT".startsWith(s.toUpperCase())) return SILENT; else if ("BRIEF".startsWith(s.toUpperCase())) return BRIEF; else if ("VERBOSE".startsWith(s.toUpperCase())) return VERBOSE; return -1; } }