1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
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 }