diff --git a/androidmk/cmd/androidmk/android.go b/androidmk/cmd/androidmk/android.go
index 960f103..91f47e0 100644
--- a/androidmk/cmd/androidmk/android.go
+++ b/androidmk/cmd/androidmk/android.go
@@ -258,7 +258,7 @@
 		}
 	case *bpparser.Operator:
 		if v.Type() != bpparser.StringType {
-			return "", nil, fmt.Errorf("classifyLocalOrGlobalPath expected a string, got %s", value.Type)
+			return "", nil, fmt.Errorf("classifyLocalOrGlobalPath expected a string, got %s", v.Type())
 		}
 
 		if v.Operator != '+' {
@@ -289,7 +289,7 @@
 	case *bpparser.String:
 		return "global", value, nil
 	default:
-		return "", nil, fmt.Errorf("classifyLocalOrGlobalPath expected a string, got %s", value.Type)
+		return "", nil, fmt.Errorf("classifyLocalOrGlobalPath expected a string, got %s", v.Type())
 
 	}
 }
diff --git a/bpfix/bpfix/bpfix.go b/bpfix/bpfix/bpfix.go
index 8445490..2c3cc6c 100644
--- a/bpfix/bpfix/bpfix.go
+++ b/bpfix/bpfix/bpfix.go
@@ -67,7 +67,7 @@
 		// detect infinite loop
 		i++
 		if i >= maxNumIterations {
-			return fmt.Errorf("Applied fixes %s times and yet the tree continued to change. Is there an infinite loop?", i)
+			return fmt.Errorf("Applied fixes %d times and yet the tree continued to change. Is there an infinite loop?", i)
 			break
 		}
 	}
diff --git a/cc/cc_test.go b/cc/cc_test.go
index 2efee59..437211c 100644
--- a/cc/cc_test.go
+++ b/cc/cc_test.go
@@ -227,7 +227,7 @@
 
 	mod := ctx.ModuleForTests(name, vendorVariant).Module().(*Module)
 	if !mod.hasVendorVariant() {
-		t.Error("%q must have vendor variant", name)
+		t.Errorf("%q must have vendor variant", name)
 	}
 
 	// Check library properties.
diff --git a/cmd/extract_linker/main.go b/cmd/extract_linker/main.go
index 8530b4a..3f24ab2 100644
--- a/cmd/extract_linker/main.go
+++ b/cmd/extract_linker/main.go
@@ -68,7 +68,7 @@
 
 	ef, err := elf.NewFile(f)
 	if err != nil {
-		log.Fatal("Unable to read elf file: %v", err)
+		log.Fatalf("Unable to read elf file: %v", err)
 	}
 
 	asm := &bytes.Buffer{}
@@ -123,17 +123,17 @@
 
 	if asmPath != "" {
 		if err := ioutil.WriteFile(asmPath, asm.Bytes(), 0777); err != nil {
-			log.Fatal("Unable to write %q: %v", asmPath, err)
+			log.Fatalf("Unable to write %q: %v", asmPath, err)
 		}
 	}
 
 	if scriptPath != "" {
 		buf := &bytes.Buffer{}
 		if err := linkerScriptTemplate.Execute(buf, sections); err != nil {
-			log.Fatal("Failed to create linker script: %v", err)
+			log.Fatalf("Failed to create linker script: %v", err)
 		}
 		if err := ioutil.WriteFile(scriptPath, buf.Bytes(), 0777); err != nil {
-			log.Fatal("Unable to write %q: %v", scriptPath, err)
+			log.Fatalf("Unable to write %q: %v", scriptPath, err)
 		}
 	}
 }
diff --git a/cmd/pom2mk/pom2mk.go b/cmd/pom2mk/pom2mk.go
index bf47896..4fc484c 100644
--- a/cmd/pom2mk/pom2mk.go
+++ b/cmd/pom2mk/pom2mk.go
@@ -305,7 +305,7 @@
 	dir := flag.Arg(0)
 	absDir, err := filepath.Abs(dir)
 	if err != nil {
-		fmt.Println(os.Stderr, "Failed to get absolute directory:", err)
+		fmt.Fprintln(os.Stderr, "Failed to get absolute directory:", err)
 		os.Exit(1)
 	}
 
diff --git a/cmd/zipsync/zipsync.go b/cmd/zipsync/zipsync.go
index ed8a06f..ea755f5 100644
--- a/cmd/zipsync/zipsync.go
+++ b/cmd/zipsync/zipsync.go
@@ -93,11 +93,11 @@
 				}
 			}
 			if filepath.IsAbs(f.Name) {
-				log.Fatal("%q in %q is an absolute path", f.Name, input)
+				log.Fatalf("%q in %q is an absolute path", f.Name, input)
 			}
 
 			if prev, exists := seen[f.Name]; exists {
-				log.Fatal("%q found in both %q and %q", f.Name, prev, input)
+				log.Fatalf("%q found in both %q and %q", f.Name, prev, input)
 			}
 			seen[f.Name] = input
 
diff --git a/ui/logger/logger.go b/ui/logger/logger.go
index 15c413d..c763e50 100644
--- a/ui/logger/logger.go
+++ b/ui/logger/logger.go
@@ -85,7 +85,7 @@
 	}
 
 	if err := os.Rename(from, newName); err != nil {
-		return fmt.Errorf("Failed to rotate", from, "to", newName, ".", err)
+		return fmt.Errorf("Failed to rotate %s to %s. %s", from, newName, err)
 	}
 	return nil
 }
diff --git a/ui/logger/logger_test.go b/ui/logger/logger_test.go
index dc6f2e9..bdf0231 100644
--- a/ui/logger/logger_test.go
+++ b/ui/logger/logger_test.go
@@ -106,7 +106,7 @@
 			if p == panicValue {
 				os.Exit(42)
 			} else {
-				fmt.Fprintln(os.Stderr, "Expected %q, got %v", panicValue, p)
+				fmt.Fprintf(os.Stderr, "Expected %q, got %v\n", panicValue, p)
 				os.Exit(3)
 			}
 		}()
