// Project: Patterns1 // Module: logger // Source code file: Logger.java. // Illustrate the Singleton software pattern. // Only one instance of a singleton class is allowed. // This is accomplished by using a private constructor. // Create the file c:/logger before running this example. import java.io.*; import java.text.*; import java.util.Date; public class Logger { private final static String LOG_FILE_NAME = "c:/logger/logfile.txt"; private static int loggerCount; private PrintWriter fileHandle = null; private static Logger loggerInstance; private Logger( ) { try { fileHandle = new PrintWriter( new BufferedWriter( new FileWriter(LOG_FILE_NAME, true))); } catch (IOException e) { fileHandle = null; } } public static Logger getInstance( ) { if (loggerCount == 0) { loggerInstance = new Logger( ); loggerCount++; } return loggerInstance; } public void writeLogEntry(String name, String entry) { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); Date date = new Date(); String timeStamp = dateFormat.format(date); String NEW_LINE = System.getProperty("line.separator"); fileHandle.println("Name: " + name + NEW_LINE + "Time Stamp:" + timeStamp + NEW_LINE + "Entry: " + entry + NEW_LINE); fileHandle.flush( ); } }