home *** CD-ROM | disk | FTP | other *** search
/ PC Pro 1999 April / DPPCPRO0499.ISO / April / Notes / 50b2wic.exe / DATA1.CAB / NotesProgramFilesJavaSupport / rt.jar / java / rmi / server / LogStream.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-23  |  3.3 KB  |  141 lines

  1. package java.rmi.server;
  2.  
  3. import java.io.ByteArrayOutputStream;
  4. import java.io.IOException;
  5. import java.io.OutputStream;
  6. import java.io.OutputStreamWriter;
  7. import java.io.PrintStream;
  8. import java.util.Date;
  9. import java.util.Hashtable;
  10.  
  11. public class LogStream extends PrintStream {
  12.    private static Hashtable known = new Hashtable(5);
  13.    private static PrintStream defaultStream;
  14.    private String name;
  15.    private OutputStream logOut;
  16.    private OutputStreamWriter logWriter;
  17.    private StringBuffer buffer = new StringBuffer();
  18.    private ByteArrayOutputStream bufOut;
  19.    public static final int SILENT = 0;
  20.    public static final int BRIEF = 10;
  21.    public static final int VERBOSE = 20;
  22.  
  23.    private LogStream(String var1, OutputStream var2) {
  24.       super(new ByteArrayOutputStream());
  25.       this.bufOut = (ByteArrayOutputStream)super.out;
  26.       this.name = var1;
  27.       this.setOutputStream(var2);
  28.    }
  29.  
  30.    public static LogStream log(String var0) {
  31.       Hashtable var2 = known;
  32.       synchronized(var2){}
  33.  
  34.       LogStream var1;
  35.       try {
  36.          var1 = (LogStream)known.get(var0);
  37.          if (var1 == null) {
  38.             var1 = new LogStream(var0, defaultStream);
  39.          }
  40.  
  41.          known.put(var0, var1);
  42.       } catch (Throwable var4) {
  43.          throw var4;
  44.       }
  45.  
  46.       return var1;
  47.    }
  48.  
  49.    public static synchronized PrintStream getDefaultStream() {
  50.       return defaultStream;
  51.    }
  52.  
  53.    public static synchronized void setDefaultStream(PrintStream var0) {
  54.       defaultStream = var0;
  55.    }
  56.  
  57.    public synchronized OutputStream getOutputStream() {
  58.       return this.logOut;
  59.    }
  60.  
  61.    public synchronized void setOutputStream(OutputStream var1) {
  62.       this.logOut = var1;
  63.       this.logWriter = new OutputStreamWriter(this.logOut);
  64.    }
  65.  
  66.    public void write(int var1) {
  67.       if (var1 == 10) {
  68.          synchronized(this) {
  69.             OutputStream var4 = this.logOut;
  70.             synchronized(var4){}
  71.  
  72.             try {
  73.                this.buffer.setLength(0);
  74.                this.buffer.append((new Date()).toString());
  75.                this.buffer.append(':');
  76.                this.buffer.append(this.name);
  77.                this.buffer.append(':');
  78.                this.buffer.append(Thread.currentThread().getName());
  79.                this.buffer.append(':');
  80.  
  81.                try {
  82.                   this.logWriter.write(this.buffer.toString());
  83.                   this.logWriter.flush();
  84.                   this.bufOut.writeTo(this.logOut);
  85.                   this.logOut.write(var1);
  86.                   this.logOut.flush();
  87.                } catch (IOException var16) {
  88.                   ((PrintStream)this).setError();
  89.                } finally {
  90.                   this.bufOut.reset();
  91.                }
  92.             } catch (Throwable var18) {
  93.                throw var18;
  94.             }
  95.          }
  96.  
  97.       } else {
  98.          super.write(var1);
  99.       }
  100.    }
  101.  
  102.    public void write(byte[] var1, int var2, int var3) {
  103.       if (var3 < 0) {
  104.          throw new ArrayIndexOutOfBoundsException(var3);
  105.       } else {
  106.          for(int var4 = 0; var4 < var3; ++var4) {
  107.             this.write(var1[var2 + var4]);
  108.          }
  109.  
  110.       }
  111.    }
  112.  
  113.    public String toString() {
  114.       return this.name;
  115.    }
  116.  
  117.    public static int parseLevel(String var0) {
  118.       if (var0 != null && var0.length() >= 1) {
  119.          try {
  120.             return Integer.parseInt(var0);
  121.          } catch (NumberFormatException var1) {
  122.             if (var0.length() < 1) {
  123.                return -1;
  124.             } else if ("SILENT".startsWith(var0.toUpperCase())) {
  125.                return 0;
  126.             } else if ("BRIEF".startsWith(var0.toUpperCase())) {
  127.                return 10;
  128.             } else {
  129.                return "VERBOSE".startsWith(var0.toUpperCase()) ? 20 : -1;
  130.             }
  131.          }
  132.       } else {
  133.          return -1;
  134.       }
  135.    }
  136.  
  137.    static {
  138.       defaultStream = System.err;
  139.    }
  140. }
  141.