logging and unit test updates
[debian/openrocket] / src / net / sf / openrocket / logging / PrintStreamLogger.java
diff --git a/src/net/sf/openrocket/logging/PrintStreamLogger.java b/src/net/sf/openrocket/logging/PrintStreamLogger.java
new file mode 100644 (file)
index 0000000..16a7545
--- /dev/null
@@ -0,0 +1,34 @@
+package net.sf.openrocket.logging;
+
+import java.io.PrintStream;
+import java.util.EnumMap;
+
+/**
+ * A logger that output log lines to various print streams depending on the log level.
+ * By default output is logged nowhere.
+ * 
+ * @author Sampo Niskanen <sampo.niskanen@iki.fi>
+ */
+public class PrintStreamLogger extends LogHelper {
+
+       private static final EnumMap<LogLevel, PrintStream> output = 
+               new EnumMap<LogLevel, PrintStream>(LogLevel.class);
+       
+       
+       @Override
+       public void log(LogLine line) {
+               PrintStream stream = output.get(line.getLevel());
+               if (stream != null) {
+                       stream.println(line.toString());
+               }
+       }
+
+       
+       public void setOutput(LogLevel level, PrintStream stream) {
+               if (level == null) {
+                       throw new IllegalArgumentException("level="+level+" stream="+stream);
+               }
+               output.put(level, stream);
+       }
+       
+}