diff --git a/htrace-htraced/src/go/src/org/apache/htrace/common/log.go b/htrace-htraced/src/go/src/org/apache/htrace/common/log.go
index c5f495d..edec869 100644
--- a/htrace-htraced/src/go/src/org/apache/htrace/common/log.go
+++ b/htrace-htraced/src/go/src/org/apache/htrace/common/log.go
@@ -104,7 +104,7 @@
 	if path == STDOUT_LOG_PATH {
 		return &logSink{path: path, file: os.Stdout}
 	}
-	file, err := os.OpenFile(string(path), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0777)
+	file, err := os.OpenFile(string(path), os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0666)
 	if err != nil {
 		sink := &logSink{path: STDOUT_LOG_PATH, file: os.Stdout}
 		fmt.Fprintf(os.Stderr, "Failed to open log file %s: %s\n",
@@ -262,6 +262,34 @@
 	}
 }
 
+//
+// A few functions which can be used to determine if a certain level of tracing
+// is enabled.  These are useful in situations when evaluating the parameters
+// of a logging function is expensive.  (Note, however, that we don't pay the
+// cost of string concatenation and manipulation when a log message doesn't
+// trigger.)
+//
+
+func (lg *Logger) TraceEnabled() bool {
+	return lg.Level >= TRACE
+}
+
+func (lg *Logger) DebugEnabled() bool {
+	return lg.Level >= DEBUG
+}
+
+func (lg *Logger) InfoEnabled() bool {
+	return lg.Level >= INFO
+}
+
+func (lg *Logger) WarnEnabled() bool {
+	return lg.Level >= WARN
+}
+
+func (lg *Logger) ErrorEnabled() bool {
+	return lg.Level >= ERROR
+}
+
 func (lg *Logger) Close() {
 	lg.sink.Unref()
 	lg.sink = nil
diff --git a/htrace-htraced/src/go/src/org/apache/htrace/htraced/datastore.go b/htrace-htraced/src/go/src/org/apache/htrace/htraced/datastore.go
index faf23cd..a26779c 100644
--- a/htrace-htraced/src/go/src/org/apache/htrace/htraced/datastore.go
+++ b/htrace-htraced/src/go/src/org/apache/htrace/htraced/datastore.go
@@ -913,7 +913,9 @@
 		if span == nil {
 			break // the source has no more spans to give
 		}
-		lg.Debugf("src.next returned span %s\n", span.ToJson())
+		if lg.DebugEnabled() {
+			lg.Debugf("src.next returned span %s\n", span.ToJson())
+		}
 		satisfied := true
 		for predIdx := range preds {
 			if !preds[predIdx].satisfiedBy(span) {
diff --git a/htrace-htraced/src/go/src/org/apache/htrace/htraced/rest.go b/htrace-htraced/src/go/src/org/apache/htrace/htraced/rest.go
index 1449802..69b316c 100644
--- a/htrace-htraced/src/go/src/org/apache/htrace/htraced/rest.go
+++ b/htrace-htraced/src/go/src/org/apache/htrace/htraced/rest.go
@@ -63,7 +63,9 @@
 			fmt.Sprintf("error marshalling ServerInfo: %s\n", err.Error()))
 		return
 	}
-	hand.lg.Debugf("Returned serverInfo %s\n", string(buf))
+	if hand.lg.DebugEnabled() {
+		hand.lg.Debugf("Returned serverInfo %s\n", string(buf))
+	}
 	w.Write(buf)
 }
 
@@ -180,7 +182,9 @@
 	hand.lg.Debugf("writeSpansHandler: received %d span(s).  defaultPid = %s\n",
 		len(spans), defaultPid)
 	for spanIdx := range spans {
-		hand.lg.Debugf("writing span %s\n", spans[spanIdx].ToJson())
+		if hand.lg.DebugEnabled() {
+			hand.lg.Debugf("writing span %s\n", spans[spanIdx].ToJson())
+		}
 		hand.store.WriteSpan(spans[spanIdx])
 	}
 }
