| 1 |
import java.util.Date; |
| 2 |
import java.text.DateFormat; |
| 3 |
import java.util.Locale; |
| 4 |
|
| 5 |
/** |
| 6 |
* ScreenLog <br> <br> |
| 7 |
* |
| 8 |
* The ScreenLog class is an implementation of the Log interface. It's |
| 9 |
* purpose is to write output to the screen. All it really does is |
| 10 |
* format the input line of text and print it out. <br> <br> |
| 11 |
* |
| 12 |
* Revision History: <br> |
| 13 |
* 1.2 - Tidied javadoc comments [26/04/00] <br> |
| 14 |
* 1.1 - Used an interface to create seperate File & Screen logs [15/03/00] <br> |
| 15 |
* 1.0 - Original File-only version <br> |
| 16 |
* |
| 17 |
* @author T.D.Bishop [tdb1@ukc.ac.uk] |
| 18 |
* @version 1.2, 25/04/2000 |
| 19 |
*/ |
| 20 |
public class ScreenLog implements Log { |
| 21 |
|
| 22 |
/** |
| 23 |
* This attribute is used by the Server class to print out versions |
| 24 |
* of all class files that form the server on startup. |
| 25 |
*/ |
| 26 |
public static String version = "1.2, 25/04/2000"; |
| 27 |
|
| 28 |
/** |
| 29 |
* The default no-arg constructor simply prints a message to the |
| 30 |
* screen stating that logging has started, then leaves the object |
| 31 |
* awaiting further messages. |
| 32 |
*/ |
| 33 |
public ScreenLog(){ |
| 34 |
write(this, "Logging initialised"); |
| 35 |
} |
| 36 |
|
| 37 |
/** |
| 38 |
* The write() method takes a message, formats it using the |
| 39 |
* formatLogLine() method, and then outputs it to the screen |
| 40 |
* using System.out.println(). The source is usually the |
| 41 |
* calling object, referenced by `this'. |
| 42 |
* |
| 43 |
* @param source A reference to the calling object. |
| 44 |
* @param input The text to be logged. |
| 45 |
*/ |
| 46 |
public void write(Object source, String input){ |
| 47 |
String line = formatLogLine(source, input); |
| 48 |
System.out.println(line); |
| 49 |
} |
| 50 |
|
| 51 |
/** |
| 52 |
* This method generates a nicely formatted line for the log, |
| 53 |
* including the date/time and the source of the message. The date |
| 54 |
* and time are formatted using the DateFormat class, and the source |
| 55 |
* class is formatted using the toString() method found in every |
| 56 |
* source file for the server. This is then prepended to the message |
| 57 |
* and returned. |
| 58 |
* |
| 59 |
* @param source A reference to the source of the message. |
| 60 |
* @param input The message to be logged. |
| 61 |
* @return The string to be written to the log. |
| 62 |
*/ |
| 63 |
private String formatLogLine(Object source, String input){ |
| 64 |
String date = DateFormat.getDateTimeInstance(DateFormat.SHORT, DateFormat.MEDIUM).format(new Date()); |
| 65 |
return "[" + date + "] " + source.toString() + ": " + input; |
| 66 |
} |
| 67 |
|
| 68 |
/** |
| 69 |
* The toString() method returns the name of the Class for formatting |
| 70 |
* when it writes to the logfile. <br> |
| 71 |
* |
| 72 |
* @return The formatted string identifying this Class. |
| 73 |
*/ |
| 74 |
public String toString(){ |
| 75 |
return this.getClass().getName(); |
| 76 |
} |
| 77 |
|
| 78 |
/** |
| 79 |
* The close() method closes the logging, although in this |
| 80 |
* case there isn't anything to close. |
| 81 |
*/ |
| 82 |
public void close(){ |
| 83 |
write(this, "Attempting to terminate logging"); |
| 84 |
} |
| 85 |
|
| 86 |
/** |
| 87 |
* This method hasn't been implemented due to the complexity |
| 88 |
* of clearing a screen in Java. A message is printed notifying |
| 89 |
* the user of this event. |
| 90 |
*/ |
| 91 |
public void clear(){ |
| 92 |
write(this, "Clear() not implemented in ScreenLog"); |
| 93 |
} |
| 94 |
|
| 95 |
} |