summaryrefslogtreecommitdiff
path: root/src/main/java/org/torproject/collector/cron/CollecTorMain.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/torproject/collector/cron/CollecTorMain.java')
-rw-r--r--src/main/java/org/torproject/collector/cron/CollecTorMain.java26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/main/java/org/torproject/collector/cron/CollecTorMain.java b/src/main/java/org/torproject/collector/cron/CollecTorMain.java
index 7a00e68..21d8948 100644
--- a/src/main/java/org/torproject/collector/cron/CollecTorMain.java
+++ b/src/main/java/org/torproject/collector/cron/CollecTorMain.java
@@ -4,6 +4,7 @@
package org.torproject.collector.cron;
import org.torproject.collector.conf.Configuration;
+import org.torproject.collector.conf.ConfigurationException;
import org.torproject.collector.conf.Key;
import org.slf4j.Logger;
@@ -18,11 +19,36 @@ import java.util.concurrent.TimeUnit;
public abstract class CollecTorMain implements Runnable {
+ private static Logger log = LoggerFactory.getLogger(CollecTorMain.class);
+
protected Configuration config;
public CollecTorMain( Configuration conf) {
this.config = conf;
}
+ /**
+ * Log errors preventing successful completion of the module.
+ */
+ @Override
+ public final void run() {
+ log.info("Starting {} module of CollecTor.", module());
+ try {
+ startProcessing();
+ } catch (ConfigurationException | RuntimeException ce) {
+ log.error("The {} module failed: {}", module(), ce.getMessage(), ce);
+ }
+ log.info("Terminating {} module of CollecTor.", module());
+ }
+
+ /**
+ * Module specific code goes here.
+ */
+ protected abstract void startProcessing() throws ConfigurationException;
+
+ /**
+ * Returns the module name for logging purposes.
+ */
+ public abstract String module();
}