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

📄 logrecord.java

📁 实现在电脑平台上控制短信modem或手机进行通讯的jar包和相关实例
💻 JAVA
字号:
/* * Copyright (C) The Apache Software Foundation. All rights reserved. * * This software is published under the terms of the Apache Software * License version 1.1, a copy of which has been included with this * distribution in the LICENSE.txt file. */package org.apache.log4j.lf5;import java.io.IOException;import java.io.PrintWriter;import java.io.StringWriter;/** * LogRecord.  A LogRecord encapsulates the details of your desired log * request. * * @author Michael J. Sikorsky * @author Robert Shaw */// Contributed by ThoughtWorks Inc.public abstract class LogRecord implements java.io.Serializable {  //--------------------------------------------------------------------------  //   Constants:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Protected Variables:  //--------------------------------------------------------------------------  protected static long _seqCount = 0;  protected LogLevel _level;  protected String _message;  protected long _sequenceNumber;  protected long _millis;  protected String _category;  protected String _thread;  protected String _thrownStackTrace;  protected Throwable _thrown;  protected String _ndc;  protected String _location;  //--------------------------------------------------------------------------  //   Private Variables:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Constructors:  //--------------------------------------------------------------------------  public LogRecord() {    super();    _millis = System.currentTimeMillis();    _category = "Debug";    _message = "";    _level = LogLevel.INFO;    _sequenceNumber = getNextId();    _thread = Thread.currentThread().toString();    _ndc = "";    _location = "";  }  //--------------------------------------------------------------------------  //   Public Methods:  //--------------------------------------------------------------------------  /**   * Get the level of this LogRecord.   *   * @return The LogLevel of this record.   * @see #setLevel(LogLevel)   * @see LogLevel   */  public LogLevel getLevel() {    return (_level);  }  /**   * Set the level of this LogRecord.   *   * @param level The LogLevel for this record.   * @see #getLevel()   * @see LogLevel   */  public void setLevel(LogLevel level) {    _level = level;  }  /**   * Abstract method. Must be overridden to indicate what log level   * to show in red.   */  public abstract boolean isSevereLevel();  /**   * @return true if getThrown().toString() is a non-empty string.   */  public boolean hasThrown() {    Throwable thrown = getThrown();    if (thrown == null) {      return false;    }    String thrownString = thrown.toString();    return thrownString != null && thrownString.trim().length() != 0;  }  /**   * @return true if isSevereLevel() or hasThrown() returns true.   */  public boolean isFatal() {    return isSevereLevel() || hasThrown();  }  /**   * Get the category asscociated with this LogRecord.  For a more detailed   * description of what a category is see setCategory().   *   * @return The category of this record.   * @see #setCategory(String)   */  public String getCategory() {    return (_category);  }  /**   * Set the category associated with this LogRecord. A category represents   * a hierarchical dot (".") separated namespace for messages.   * The definition of a category is application specific, but a common convention   * is as follows:   *   * <p>   * When logging messages   * for a particluar class you can use its class name:   * com.thoughtworks.framework.servlet.ServletServiceBroker.<br><br>   * Futhermore, to log a message for a particular method in a class   * add the method name:   * com.thoughtworks.framework.servlet.ServletServiceBroker.init().   * </p>   *   * @param category The category for this record.   * @see #getCategory()   */  public void setCategory(String category) {    _category = category;  }  /**   * Get the message asscociated with this LogRecord.   *   * @return The message of this record.   * @see #setMessage(String)   */  public String getMessage() {    return (_message);  }  /**   * Set the message associated with this LogRecord.   *   * @param message The message for this record.   * @see #getMessage()   */  public void setMessage(String message) {    _message = message;  }  /**   * Get the sequence number associated with this LogRecord.  Sequence numbers   * are generally assigned when a LogRecord is constructed.  Sequence numbers   * start at 0 and increase with each newly constructed LogRocord.   *   * @return The sequence number of this record.   * @see #setSequenceNumber(long)   */  public long getSequenceNumber() {    return (_sequenceNumber);  }  /**   * Set the sequence number assocsiated with this LogRecord.  A sequence number   * will automatically be assigned to evey newly constructed LogRecord, however,   * this method can override the value.   *   * @param number The sequence number.   * @see #getSequenceNumber()   */  public void setSequenceNumber(long number) {    _sequenceNumber = number;  }  /**   * Get the event time of this record in milliseconds from 1970.   * When a LogRecord is constructed the event time is set but may be   * overridden by calling setMillis();   *   * @return The event time of this record in milliseconds from 1970.   * @see #setMillis(long)   */  public long getMillis() {    return _millis;  }  /**   * Set the event time of this record.  When a LogRecord is constructed   * the event time is set but may be overridden by calling this method.   *   * @param millis The time in milliseconds from 1970.   * @see #getMillis()   */  public void setMillis(long millis) {    _millis = millis;  }  /**   * Get the thread description asscociated with this LogRecord.  When a   * LogRecord is constructed, the thread description is set by calling:   * Thread.currentThread().toString().  You may supply a thread description   * of your own by calling the setThreadDescription(String) method.   *   * @return The thread description of this record.   * @see #setThreadDescription(String)   */  public String getThreadDescription() {    return (_thread);  }  /**   * Set the thread description associated with this LogRecord.  When a   * LogRecord is constructed, the thread description is set by calling:   * Thread.currentThread().toString().  You may supply a thread description   * of your own by calling this method.   *   * @param threadDescription The description of the thread for this record.   * @see #getThreadDescription()   */  public void setThreadDescription(String threadDescription) {    _thread = threadDescription;  }  /**   * Get the stack trace in a String-based format for the associated Throwable   * of this LogRecord.  The stack trace in a String-based format is set   * when the setThrown(Throwable) method is called.   *   * <p>   * Why do we need this method considering that we   * have the getThrown() and setThrown() methods?   * A Throwable object may not be serializable, however, a String representation   * of it is.  Users of LogRecords should generally call this method over   * getThrown() for the reasons of serialization.   * </p>   *   * @return The Stack Trace for the asscoiated Throwable of this LogRecord.   * @see #setThrown(Throwable)   * @see #getThrown()   */  public String getThrownStackTrace() {    return (_thrownStackTrace);  }  /**   * Set the ThrownStackTrace for the log record.   *   * @param trace A String to associate with this LogRecord   * @see #getThrownStackTrace()   */  public void setThrownStackTrace(String trace) {    _thrownStackTrace = trace;  }  /**   * Get the Throwable associated with this LogRecord.   *   * @return The LogLevel of this record.   * @see #setThrown(Throwable)   * @see #getThrownStackTrace()   */  public Throwable getThrown() {    return (_thrown);  }  /**   * Set the Throwable associated with this LogRecord.  When this method   * is called, the stack trace in a String-based format is made   * available via the getThrownStackTrace() method.   *   * @param thrown A Throwable to associate with this LogRecord.   * @see #getThrown()   * @see #getThrownStackTrace()   */  public void setThrown(Throwable thrown) {    if (thrown == null) {      return;    }    _thrown = thrown;    StringWriter sw = new StringWriter();    PrintWriter out = new PrintWriter(sw);    thrown.printStackTrace(out);    out.flush();    _thrownStackTrace = sw.toString();    try {      out.close();      sw.close();    } catch (IOException e) {      // Do nothing, this should not happen as it is StringWriter.    }    out = null;    sw = null;  }  /**   * Return a String representation of this LogRecord.   */  public String toString() {    StringBuffer buf = new StringBuffer();    buf.append("LogRecord: [" + _level + ", " + _message + "]");    return (buf.toString());  }  /**   * Get the NDC (nested diagnostic context) for this record.   *   * @return The string representing the NDC.   */  public String getNDC() {    return _ndc;  }  /**   * Set the NDC (nested diagnostic context) for this record.   *   * @param ndc A string representing the NDC.   */  public void setNDC(String ndc) {    _ndc = ndc;  }  /**   * Get the location in code where this LogRecord originated.   *   * @return The string containing the location information.   */  public String getLocation() {    return _location;  }  /**   * Set the location in code where this LogRecord originated.   *   * @param location A string containing location information.   */  public void setLocation(String location) {    _location = location;  }  /**   * Resets that sequence number to 0.   *   */  public static synchronized void resetSequenceNumber() {    _seqCount = 0;  }  //--------------------------------------------------------------------------  //   Protected Methods:  //--------------------------------------------------------------------------  protected static synchronized long getNextId() {    _seqCount++;    return _seqCount;  }  //--------------------------------------------------------------------------  //   Private Methods:  //--------------------------------------------------------------------------  //--------------------------------------------------------------------------  //   Nested Top-Level Classes or Interfaces:  //--------------------------------------------------------------------------}

⌨️ 快捷键说明

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