diff --git a/lib/logging.properties b/lib/logging.properties
index ab912df4f624a20b73d42f359ad53c9f7c5779a4..41a45128d9a407688f212d6c333640c4b28c4bd7 100644
--- a/lib/logging.properties
+++ b/lib/logging.properties
@@ -37,10 +37,11 @@ handlers = java.util.logging.ConsoleHandler
 java.util.logging.FileHandler.pattern = %h/java%u.log
 java.util.logging.FileHandler.limit = 50000
 java.util.logging.FileHandler.count = 1
-java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
+#java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter
+java.util.logging.FileHandler.formatter = org.opensha2.util.Logging$ConsoleFormatter
 
 # Limit the message that are printed on the console to INFO and above.
-java.util.logging.ConsoleHandler.level = ALL
+java.util.logging.ConsoleHandler.level = INFO
 #java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
 java.util.logging.ConsoleHandler.formatter = org.opensha2.util.Logging$ConsoleFormatter
 
@@ -57,4 +58,4 @@ org.opensha2.eq.model.IndexedFaultParser.level = INFO
 org.opensha2.eq.model.GridParser.level = INFO
 org.opensha2.eq.model.InterfaceParser.level = INFO
 org.opensha2.eq.model.GmmParser.level = INFO
-org.opensha2.programs.HazardCurve = ALL
+org.opensha2.programs.HazardCalc = ALL
diff --git a/src/org/opensha2/eq/model/Loader.java b/src/org/opensha2/eq/model/Loader.java
index 6b950cceed864696e814f52d300c611c50ed2640..9ace19ec30b24e17ef0d294abaec1b47538d873c 100644
--- a/src/org/opensha2/eq/model/Loader.java
+++ b/src/org/opensha2/eq/model/Loader.java
@@ -1,7 +1,6 @@
 package org.opensha2.eq.model;
 
 import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
 import static com.google.common.base.Preconditions.checkState;
 import static com.google.common.base.StandardSystemProperty.LINE_SEPARATOR;
 import static java.nio.file.Files.newDirectoryStream;
diff --git a/src/org/opensha2/programs/HazardCalc.java b/src/org/opensha2/programs/HazardCalc.java
index 571f4519313f2d971fa8dfb1031bb034c2b05bd9..2a6f358b4fddf7092283186d74c6e32ce005a2fb 100644
--- a/src/org/opensha2/programs/HazardCalc.java
+++ b/src/org/opensha2/programs/HazardCalc.java
@@ -16,6 +16,7 @@ import java.util.concurrent.ExecutionException;
 import java.util.concurrent.Executor;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.ThreadPoolExecutor;
+import java.util.logging.FileHandler;
 import java.util.logging.Logger;
 
 import org.opensha2.calc.CalcConfig;
@@ -85,10 +86,14 @@ public class HazardCalc {
 			return Optional.of(USAGE);
 		}
 
-		Logging.init();
-		Logger log = Logger.getLogger(HazardCalc.class.getName());
-
 		try {
+			Logging.init();
+			Logger log = Logger.getLogger(HazardCalc.class.getName());
+			Path tempLog = createTempLog();
+			FileHandler fh = new FileHandler(tempLog.getFileName().toString());
+			fh.setFormatter(new Logging.ConsoleFormatter());
+			log.getParent().addHandler(fh);
+
 			log.info(PROGRAM + ": initializing...");
 			Path modelPath = Paths.get(args[0]);
 			HazardModel model = HazardModel.load(modelPath);
@@ -106,7 +111,9 @@ public class HazardCalc {
 			log.info("");
 			log.info("Sites: " + sites);
 
-			calc(model, config, sites, log);
+			Path out = calc(model, config, sites, log);
+			Files.move(tempLog, out.resolve(PROGRAM + ".log"));
+			
 			log.info(PROGRAM + ": finished");
 			return Optional.absent();
 
@@ -143,9 +150,10 @@ public class HazardCalc {
 	private static final OpenOption[] APPEND_OPTIONS = new OpenOption[] { APPEND };
 
 	/*
-	 * Compute hazard curves using the supplied model, config, and sites.
+	 * Compute hazard curves using the supplied model, config, and sites. Method
+	 * returns the path to the directory where results were written.
 	 */
-	private static void calc(
+	private static Path calc(
 			HazardModel model,
 			CalcConfig config,
 			Iterable<Site> sites,
@@ -191,21 +199,36 @@ public class HazardCalc {
 			Results.writeResults(outDir, results, opts);
 		}
 		log.info(PROGRAM + ": " + count + " complete " + totalWatch);
-
+		
 		if (threadCount != ThreadCount.ONE) {
 			execSvc.shutdown();
 		}
+		
+		return outDir;
 	}
 
-	/* avoid clobbering exsting result directories via incrementing */
+	/* Avoid clobbering exsting result directories via incrementing */
 	private static Path createOutputDir(Path dir) {
 		int i = 1;
-		Path dirIncrement = dir;
-		while (Files.exists(dirIncrement)) {
-			dirIncrement = dirIncrement.resolveSibling(dir.getFileName() + "-" + i);
+		Path dirIncr = dir;
+		while (Files.exists(dirIncr)) {
+			dirIncr = dirIncr.resolveSibling(dir.getFileName() + "-" + i);
+			i++;
+		}
+		return dirIncr;
+	}
+
+	private static final String TMP_LOG = "nshmp-haz-log";
+
+	private static Path createTempLog() {
+		Path logBase = Paths.get(".");
+		Path logIncr = logBase.resolve(TMP_LOG);
+		int i = 1;
+		while (Files.exists(logIncr)) {
+			logIncr = logBase.resolve(TMP_LOG + "-" + i);
 			i++;
 		}
-		return dirIncrement;
+		return logIncr;
 	}
 
 	/**
diff --git a/src/org/opensha2/util/Logging.java b/src/org/opensha2/util/Logging.java
index 66f6abfb80fff20ac75a274ade8ec2d2ce7db642..0e6e9b87cba0ec7b2241fe7f30111fce85c7bf19 100644
--- a/src/org/opensha2/util/Logging.java
+++ b/src/org/opensha2/util/Logging.java
@@ -58,7 +58,6 @@ public class Logging {
 
 	/**
 	 * Custom console formatter.
-	 * @author Peter Powers
 	 */
 	public final static class ConsoleFormatter extends Formatter {