release 0.9.6
[debian/openrocket] / src / net / sf / openrocket / logging / DelegatorLogger.java
diff --git a/src/net/sf/openrocket/logging/DelegatorLogger.java b/src/net/sf/openrocket/logging/DelegatorLogger.java
new file mode 100644 (file)
index 0000000..10a8daa
--- /dev/null
@@ -0,0 +1,34 @@
+package net.sf.openrocket.logging;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * A logger implementation that delegates logging to other logger implementations.
+ * Multiple loggers can be added to the delegator, all of which will receive
+ * all of the log lines.
+ * 
+ * @author Sampo Niskanen <sampo.niskanen@iki.fi>
+ */
+public class DelegatorLogger extends LogHelper {
+
+       private List<LogHelper> loggers = new ArrayList<LogHelper>();
+       
+       @Override
+       public void log(LogLine line) {
+               LogHelper[] array = loggers.toArray(new LogHelper[0]);
+               for (LogHelper l: array) {
+                       l.log(line);
+               }
+       }
+       
+       
+       public void addLogger(LogHelper logger) {
+               this.loggers.add(logger);
+       }
+       
+       public void removeLogger(LogHelper logger) {
+               this.loggers.remove(logger);
+       }
+
+}