⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 logrecord.java

📁 java版ace,java程序员值得一看
💻 JAVA
字号:
/************************************************* * * = PACKAGE *    JACE.netsvcs.Logger * * = FILENAME *    LogRecord.java * *@author Chris Cleeland, Everett Anderson * *************************************************/package JACE.netsvcs.Logger;import java.util.*;import java.io.*;import JACE.OS.*;/** * Communicates logging information.  Compatible with the C++ ACE * ACE_Log_Record class. */public class LogRecord{  /**   * Maximum size of a LogRecord   */  final public int MAXLOGMSGLEN = 4 * 1024;  private int type_;  private int length_;  private long msec_;  private int pid_;  private byte[] msgData_;  private final static int numIntMembers = 5;  private final static int sizeofIntInBytes = 4;  /**   * Create a default instance.   */  public LogRecord()  {    type(0);    timeStamp((int)new Date().getTime());    length(0);    pid(0);  }  /**   * Create a LogRecord.  This is the designated initializer.   * @param priority a numeric specification of the priority (ascending)   * @param milliseconds time attached to the log entry in Unix <pre>time_t</pre> format    * @param pid the process ID    */  public LogRecord(int priority,		   long milliseconds,		   int pid)  {    type(priority);    timeStamp(milliseconds);    length(0);    pid(pid);  }  /**   * Create a LogRecord with the current time and the given message.   *   *@param message message to log   */  public LogRecord (String message)  {    this ();    msgData (message);  }  /**   * Conversion to string.  Only includes the <pre>msgData_</pre> member.   */  public String toString()  {    String result = null;    try {      result = new String (msgData_,			   "US-ASCII");    } catch (UnsupportedEncodingException e) {      result = new String (msgData_);    }    return result;  }  /**   * Place a textual representation of the record on a PrintStream.   * When verbose is specified to be true, the output takes the form   * <PRE>(Date)@(host name)@(PID)@(type)@(message)</PRE>   * Otherwise it just prints the message.   * @param hostname name of the host generating this record   * @param verbose specify how much information to print (see above)   * @param ps A PrintStream instance to which the output should go.   */  public void print(String hostname,		    boolean verbose,		    PrintStream ps)  {    String toprint;    if (verbose)      {	Date now = new Date(this.timeStamp());	/* 01234567890123456789012345 */	/* Wed Oct 18 14:25:36 1989n0 */	toprint = now.toString().substring(4) + "@"                + hostname + "@" + pid_ + "@" + type_ + "@"                + this.toString();      }    else      {	toprint = this.toString();      }    ps.println(toprint);  }  /**   * Read in the data for this LogRecord from the given InputStream.   *   *@param is InputStream to read from   *@exception IOException error during transmission   */  public void streamInFrom (InputStream is) throws IOException  {    BufferedInputStream bis = new BufferedInputStream (is);    DataInputStream dis = new DataInputStream (bis);    streamInFrom (dis);  }  /**   * Read in the data for this LogRecord from the given DataInputStream.   *   *@param dis DataInputStream to read from   *@exception IOException error during transmission   */  public void streamInFrom(DataInputStream dis) throws IOException  {    // Order here must match layout order in the C++ class.    length(dis.readInt());    type(dis.readInt());    this.timeStamp((long)dis.readInt() * 1000);    // Skip smaller time resolution info since we're lucky if Java's    // timer can handle more than millisecond precision, anyway    dis.skipBytes(4);     pid(dis.readInt());    int dataLength = (int) (length_ - numIntMembers * sizeofIntInBytes);    msgData_ = new byte[dataLength];    dis.readFully(msgData_, 0, dataLength);  }  /**    * Write this LogRecord out to the given OutputStream.   *   *@param os OutputStream to write to   *@exception IOException error during transmission   */  public void streamOutTo (OutputStream os) throws IOException  {    BufferedOutputStream bos = new BufferedOutputStream (os);    DataOutputStream dos = new DataOutputStream (bos);    streamOutTo (dos);  }  /**   * Write this LogRecord out to the given DataOutputStream.   *   *@param dos OutputStream to write to   *@exception IOException error during transmission   */  public void streamOutTo(DataOutputStream dos) throws IOException  {    dos.writeInt(length());    dos.writeInt(type());    dos.writeInt((int)(this.msec_ / 1000));    dos.writeInt(0);      dos.writeInt(pid());    dos.write(msgData_);    dos.flush ();  }  /**   * Return the LogRecord type.   */  public int type()            { return type_; }  /**   * Set the LogRecord type.   */  public void type(int t)      { type_ = t; }  /**   * Return the length of this LogRecord.   */  public int length()          { return length_;  }  /**   * Set the length of this LogRecord.   */  public void length(int l)    { length_ = l; }  /**   * Calculate the length of this LogRecord from the size of   * the message and the header.   */  private void setLen(int msgLen)       { length(msgLen + numIntMembers * sizeofIntInBytes); }  /**   * Return the millisec time stamp of this LogRecord.   */  public long timeStamp()      { return this.msec_; }  /**   * Set the millisec time stamp of this LogRecord.   */  public void timeStamp(long msec){ this.msec_ = msec; }  /**   * Return the PID of this LogRecord.   */  public int pid()             { return pid_; }  /**   * Set the PID of this LogRecord.   */  public void pid(int p)       { pid_ = p; }  /**   * Return the message of this LogRecord as a byte array.   */  public byte[] msgData()      { return msgData_; }  /**   * Set the message of this LogRecord to a given byte array.   */  public void msgData(byte[] m)    {       int size = m.length;      if (size > MAXLOGMSGLEN) 	size = MAXLOGMSGLEN;      this.msgData_ = new byte[size];       System.arraycopy(m, 0, msgData_, 0, size);      setLen(size);    }  /**   * Set the message of this LogRecord to a given byte array.  First   * tries to use US-ASCII encoding, then uses the default encoding   * if that fails.  The toString method is essentially the opposite   * version.   */  public void msgData(String m)  {    byte temp[] = null;    try {      temp = m.getBytes("US-ASCII");    } catch (UnsupportedEncodingException e) {      temp = m.getBytes ();    }    if (temp.length > MAXLOGMSGLEN) {      this.msgData_ = new byte[MAXLOGMSGLEN];            System.arraycopy(temp, 0, msgData_, 0, MAXLOGMSGLEN);    } else      this.msgData_ = temp;        setLen(msgData_.length);  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -