001: /*
002: * This file is part of the Echo Web Application Framework (hereinafter "Echo").
003: * Copyright (C) 2002-2005 NextApp, Inc.
004: *
005: * Version: MPL 1.1/GPL 2.0/LGPL 2.1
006: *
007: * The contents of this file are subject to the Mozilla Public License Version
008: * 1.1 (the "License"); you may not use this file except in compliance with
009: * the License. You may obtain a copy of the License at
010: * http://www.mozilla.org/MPL/
011: *
012: * Software distributed under the License is distributed on an "AS IS" basis,
013: * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
014: * for the specific language governing rights and limitations under the
015: * License.
016: *
017: * Alternatively, the contents of this file may be used under the terms of
018: * either the GNU General Public License Version 2 or later (the "GPL"), or
019: * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
020: * in which case the provisions of the GPL or the LGPL are applicable instead
021: * of those above. If you wish to allow use of your version of this file only
022: * under the terms of either the GPL or the LGPL, and not to allow others to
023: * use your version of this file under the terms of the MPL, indicate your
024: * decision by deleting the provisions above and replace them with the notice
025: * and other provisions required by the GPL or the LGPL. If you do not delete
026: * the provisions above, a recipient may use your version of this file under
027: * the terms of any one of the MPL, the GPL or the LGPL.
028: */
029:
030: package echo2example.chatserver;
031:
032: import java.io.PrintStream;
033: import java.text.DateFormat;
034: import java.util.Date;
035:
036: /**
037: * Primitive utility to log posted messages and users entering and leaving
038: * chat room.
039: */
040: public class Log {
041:
042: private static final DateFormat DATE_FORMAT = DateFormat
043: .getDateTimeInstance(DateFormat.SHORT, DateFormat.SHORT);
044:
045: public static final int ACTION_POST = 1;
046: public static final int ACTION_AUTH = 2;
047: public static final int ACTION_EXIT = 3;
048:
049: private static PrintStream logStream = System.err;
050:
051: /**
052: * Sets the <code>PrintStream</code> to which log messages will be written.
053: *
054: * @param logStream the log <code>PrintStream</code>
055: */
056: public static final void setLogStream(PrintStream logStream) {
057: Log.logStream = logStream;
058: }
059:
060: /**
061: * Logs a chat operation.
062: *
063: * @param action the type of action taken, one of the following values:
064: * <ul>
065: * <li><code>ACTION_POST</code></li>
066: * <li><code>ACTION_AUTH</code></li>
067: * <li><code>ACTION_EXIT</code></li>
068: * </ul>
069: * @param remoteHost the remote host performing the action
070: * @param userName the name of the user
071: * @param message the posted message content, if applicable
072: */
073: public static final void log(int action, String remoteHost,
074: String userName, String message) {
075: if (logStream == null) {
076: // Do nothing.
077: return;
078: }
079: String time = DATE_FORMAT.format(new Date());
080: String logMessage;
081: switch (action) {
082: case ACTION_POST:
083: logMessage = "ECHO2CHAT[" + time + "] POST: remoteHost="
084: + remoteHost + ", userName=" + userName
085: + ", message=" + message;
086: break;
087: case ACTION_AUTH:
088: logMessage = "ECHO2CHAT[" + time + "] AUTH: remoteHost="
089: + remoteHost + ", userName=" + userName;
090: break;
091: case ACTION_EXIT:
092: logMessage = "ECHO2CHAT[" + time + "] EXIT: remoteHost="
093: + remoteHost + ", userName=" + userName;
094: break;
095: default:
096: throw new IllegalArgumentException("Invalid action.");
097: }
098: logStream.println(logMessage);
099: }
100: }
|