home *** CD-ROM | disk | FTP | other *** search
- package java.rmi.server;
-
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.io.OutputStreamWriter;
- import java.io.PrintStream;
- import java.util.Date;
- import java.util.Hashtable;
-
- public class LogStream extends PrintStream {
- private static Hashtable known = new Hashtable(5);
- private static PrintStream defaultStream;
- private String name;
- private OutputStream logOut;
- private OutputStreamWriter logWriter;
- private StringBuffer buffer = new StringBuffer();
- private ByteArrayOutputStream bufOut;
- public static final int SILENT = 0;
- public static final int BRIEF = 10;
- public static final int VERBOSE = 20;
-
- private LogStream(String var1, OutputStream var2) {
- super(new ByteArrayOutputStream());
- this.bufOut = (ByteArrayOutputStream)super.out;
- this.name = var1;
- this.setOutputStream(var2);
- }
-
- public static LogStream log(String var0) {
- Hashtable var2 = known;
- synchronized(var2){}
-
- LogStream var1;
- try {
- var1 = (LogStream)known.get(var0);
- if (var1 == null) {
- var1 = new LogStream(var0, defaultStream);
- }
-
- known.put(var0, var1);
- } catch (Throwable var4) {
- throw var4;
- }
-
- return var1;
- }
-
- public static synchronized PrintStream getDefaultStream() {
- return defaultStream;
- }
-
- public static synchronized void setDefaultStream(PrintStream var0) {
- defaultStream = var0;
- }
-
- public synchronized OutputStream getOutputStream() {
- return this.logOut;
- }
-
- public synchronized void setOutputStream(OutputStream var1) {
- this.logOut = var1;
- this.logWriter = new OutputStreamWriter(this.logOut);
- }
-
- public void write(int var1) {
- if (var1 == 10) {
- synchronized(this) {
- OutputStream var4 = this.logOut;
- synchronized(var4){}
-
- try {
- this.buffer.setLength(0);
- this.buffer.append((new Date()).toString());
- this.buffer.append(':');
- this.buffer.append(this.name);
- this.buffer.append(':');
- this.buffer.append(Thread.currentThread().getName());
- this.buffer.append(':');
-
- try {
- this.logWriter.write(this.buffer.toString());
- this.logWriter.flush();
- this.bufOut.writeTo(this.logOut);
- this.logOut.write(var1);
- this.logOut.flush();
- } catch (IOException var16) {
- ((PrintStream)this).setError();
- } finally {
- this.bufOut.reset();
- }
- } catch (Throwable var18) {
- throw var18;
- }
- }
-
- } else {
- super.write(var1);
- }
- }
-
- public void write(byte[] var1, int var2, int var3) {
- if (var3 < 0) {
- throw new ArrayIndexOutOfBoundsException(var3);
- } else {
- for(int var4 = 0; var4 < var3; ++var4) {
- this.write(var1[var2 + var4]);
- }
-
- }
- }
-
- public String toString() {
- return this.name;
- }
-
- public static int parseLevel(String var0) {
- if (var0 != null && var0.length() >= 1) {
- try {
- return Integer.parseInt(var0);
- } catch (NumberFormatException var1) {
- if (var0.length() < 1) {
- return -1;
- } else if ("SILENT".startsWith(var0.toUpperCase())) {
- return 0;
- } else if ("BRIEF".startsWith(var0.toUpperCase())) {
- return 10;
- } else {
- return "VERBOSE".startsWith(var0.toUpperCase()) ? 20 : -1;
- }
- }
- } else {
- return -1;
- }
- }
-
- static {
- defaultStream = System.err;
- }
- }
-