logger.java~1~

来自「《深入浅出设计模式》的完整源代码」· JAVA~1~ 代码 · 共 95 行

JAVA~1~
95
字号
package singleton;
import java.text.SimpleDateFormat;
import java.util.GregorianCalendar;
import java.util.Properties;
import java.io.InputStream;
import java.io.FileOutputStream;
import java.io.PrintStream;
import java.io.IOException;

public class Logger {
  private String fileName;
  private Properties properties;
  private Priority priority;
  /**
   * Private constructor构造子是私有的,因此,此类不能被继承
   */
  private Logger () {
    logger = this;
  }

  /**
   * Level of logging, error or information etc
   *
   * @return level, int
   */
  public int getRegisteredLevel () {
    int i = 0;
    try {
      InputStream inputstream = getClass ().getResourceAsStream (
          "Logger.properties");
      properties.load (inputstream);
      inputstream.close ();
      i = Integer.parseInt (properties.getProperty (
          "**logger.registeredlevel**"));
      if (i < 0 || i > 3)
        i = 0;
    }
    catch (Exception exception) {
      System.out.println ("Logger: Failed in the getRegisteredLevel method");
      exception.printStackTrace ();
    }
    return i;
  }

  /**
   * One file will be made daily. So, putting date time in file
   * name.
   *
   * @param gc GregorianCalendar
   * @return String, name of file
   */
  private String getFileName (GregorianCalendar gc) {
    SimpleDateFormat dateFormat1 = new SimpleDateFormat ("dd-MMM-yyyy");
    String dateString = dateFormat1.format (gc.getTime ());
    String fileName = "C:\\prashant\\patterns\\log\\PatternsExceptionLog-" +
        dateString + ".txt";
    return fileName;
  }

  /**
   * A mechanism to log message to the file.
   *
   * @param p Priority
   * @param message String
   */
  public void logMsg (Priority p, String message) {
    try {
      GregorianCalendar gc = new GregorianCalendar ();
      String fileName = getFileName (gc);
      FileOutputStream fos = new FileOutputStream (fileName, true);
      PrintStream ps = new PrintStream (fos);
      SimpleDateFormat dateFormat2 = new SimpleDateFormat (
          "EEE, MMM d, yyyy 'at' hh:mm:ss a");
      ps.println ("<" + dateFormat2.format (gc.getTime ()) + ">[" + message +
                  "]");
      ps.close ();
    }
    catch (IOException ie) {
      ie.printStackTrace ();
    }
  }

  /**
   * this method initialises the logger, creates an object
   */
  public static void initialize () {
    logger = new Logger ();
  }

  // singleton - pattern
  private static Logger logger;
  public static Logger getLogger () {
    return logger;
  }
}

⌨️ 快捷键说明

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