View Javadoc

1   /*
2    * This file is part of Domingo
3    * an Open Source Java-API to Lotus Notes/Domino
4    * hosted at http://domingo.sourceforge.net
5    *
6    * Copyright (c) 2003-2007 Beck et al. projects GmbH Munich, Germany (http://www.bea.de)
7    *
8    * This library is free software; you can redistribute it and/or
9    * modify it under the terms of the GNU Lesser General Public
10   * License as published by the Free Software Foundation; either
11   * version 2.1 of the License, or (at your option) any later version.
12   *
13   * This library is distributed in the hope that it will be useful,
14   * but WITHOUT ANY WARRANTY; without even the implied warranty of
15   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16   * Lesser General Public License for more details.
17   *
18   * You should have received a copy of the GNU Lesser General Public
19   * License along with this library; if not, write to the Free Software
20   * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21   */
22  
23  package de.bea.domingo.monitor;
24  
25  import java.io.PrintStream;
26  import java.text.SimpleDateFormat;
27  import java.util.Date;
28  
29  /***
30   * Abstract stream monitor, logs everything to a <code>PrintStream</code>.
31   *
32   * @author <a href=mailto:kriede@users.sourceforge.net>Kurt Riede</a>
33   */
34  public abstract class AbstractStreamMonitor extends AbstractDefaultMonitor {
35  
36      /*** Date format used to format dates in log output. */
37      private final SimpleDateFormat dateFormat;
38  
39      /*** Reference to the output stream for monitoring. */
40      private PrintStream stream;
41  
42      /***
43       * Constructor.
44       *
45       * @param theStream the output stream for monitoring
46       */
47      public AbstractStreamMonitor(final PrintStream theStream) {
48          stream = theStream;
49          dateFormat = new SimpleDateFormat ("yyyy.MM.dd HH:mm:ss");
50      }
51  
52      /***
53       * Monitor a message.
54       *
55       * @param message the message
56       */
57      protected final synchronized void monitor(final String message) {
58          final StringBuffer buffer = new StringBuffer();
59          buffer.append("[" + dateFormat.format(new Date()) + "] ");
60          buffer.append(Thread.currentThread().getName() + ": " + message);
61          stream.println(buffer.toString());
62      }
63  
64      /***
65       * Monitor a throwable.
66       *
67       * @param throwable the throwable
68       */
69      protected final synchronized void monitor(final Throwable throwable) {
70          if (throwable != null) {
71              throwable.printStackTrace(stream);
72          }
73      }
74  }