diff --git a/cmd/branch_util/cli.go b/cmd/branch_util/cli.go
index 380f658..2452722 100644
--- a/cmd/branch_util/cli.go
+++ b/cmd/branch_util/cli.go
@@ -6,14 +6,15 @@
 import (
 	"context"
 	"fmt"
+	"log"
+	"os"
+
 	"github.com/maruel/subcommands"
 	"go.chromium.org/chromiumos/infra/go/internal/branch"
 	"go.chromium.org/luci/auth"
 	"go.chromium.org/luci/auth/client/authcli"
 	"go.chromium.org/luci/common/api/gerrit"
 	"go.chromium.org/luci/hardcoded/chromeinfra"
-	"log"
-	"os"
 )
 
 var (
@@ -81,10 +82,6 @@
 func Run(c branchCommand, a subcommands.Application, args []string, env subcommands.Env) int {
 	branch.StdoutLog = a.(*branchApplication).stdoutLog
 	branch.StderrLog = a.(*branchApplication).stderrLog
-	// Set output of standard log in case any packages use it.
-	if branch.StdoutLog != nil {
-		log.SetOutput(branch.StdoutLog.Writer())
-	}
 
 	// Validate flags/arguments.
 	ok, errMsg := c.validate(args)
diff --git a/cmd/branch_util/create.go b/cmd/branch_util/create.go
index bec6f6f..4a865ee 100644
--- a/cmd/branch_util/create.go
+++ b/cmd/branch_util/create.go
@@ -5,6 +5,9 @@
 
 import (
 	"context"
+	"io/ioutil"
+	"os"
+
 	"github.com/maruel/subcommands"
 	"go.chromium.org/chromiumos/infra/go/internal/branch"
 	mv "go.chromium.org/chromiumos/infra/go/internal/chromeos_version"
@@ -13,8 +16,6 @@
 	"go.chromium.org/chromiumos/infra/go/internal/repo"
 	"go.chromium.org/luci/auth"
 	"go.chromium.org/luci/common/errors"
-	"io/ioutil"
-	"os"
 )
 
 const (
@@ -110,7 +111,6 @@
 func (c *createBranch) Run(a subcommands.Application, args []string,
 	env subcommands.Env) int {
 	// Common setup (argument validation, repo init, etc.)
-
 	ret := Run(c, a, args, env)
 	if ret != 0 {
 		return ret
@@ -149,7 +149,7 @@
 			branch.LogErr(errors.Annotate(err, "Error: Failed to load manifest from file ").Err().Error())
 			return 1
 		}
-		branch.LogErr("Got manifest from filepath %v", c.file)
+		branch.LogOut("Got manifest from filepath %v", c.file)
 		branch.WorkingManifest = *file
 	} else {
 		file, err := gerrit.DownloadFileFromGitiles(authedClient, ctx, "chrome-internal.googlesource.com",
@@ -158,7 +158,7 @@
 			branch.LogErr(errors.Annotate(err, "failed to fetch buildspec %v", c.buildSpecManifest).Err().Error())
 			return 1
 		}
-		branch.LogErr("Got %v from Gitiles", c.buildSpecManifest)
+		branch.LogOut("Got %v from Gitiles", c.buildSpecManifest)
 		wm, err := ioutil.TempFile("", "working-manifest.xml")
 		if err != nil {
 			branch.LogErr("%s\n", err.Error())
@@ -175,7 +175,7 @@
 			branch.LogErr("%s\n", err.Error())
 			return 1
 		}
-		branch.LogErr("Fetched working manifest.\n")
+		branch.LogOut("Fetched working manifest.\n")
 	}
 
 	// Use manifest-internal as a sentinel repository to get the appropriate branch name.
@@ -196,8 +196,8 @@
 		sourceUpstream = "main"
 	}
 
-	branch.LogErr("Using sourceRevision %s for manifestInternal", sourceRevision)
-	branch.LogErr("Using sourceUpstream %s for manifestInternal", sourceUpstream)
+	branch.LogOut("Using sourceRevision %s for manifestInternal", sourceRevision)
+	branch.LogOut("Using sourceUpstream %s for manifestInternal", sourceUpstream)
 
 	// Validate the version.
 	// Double check that the checkout has a zero patch number. Otherwise we cannot branch from it.
@@ -228,9 +228,9 @@
 			vinfo.VersionString())
 		return 1
 	}
-	branch.LogErr("Version found: %s.\n", vinfo.VersionString())
+	branch.LogOut("Version found: %s.\n", vinfo.VersionString())
 
-	branch.LogErr("Have manifest = %v", manifestInternal)
+	branch.LogOut("Have manifest = %v", manifestInternal)
 
 	branchType := ""
 
@@ -262,6 +262,7 @@
 
 	// Generate git branch names.
 	branches := branch.ProjectBranches(branchName, git.StripRefs(sourceRevision))
+	// Do not change the format of this string, it is parsed by the brancher recipe.
 	branch.LogOut("Creating branch: %s\n", branchName)
 
 	projectBranches, err := branch.GerritProjectBranches(branches)
@@ -289,7 +290,7 @@
 	}
 
 	if !c.Push {
-		branch.LogErr("Dry run (no --push): completed successfully")
+		branch.LogOut("Dry run (no --push): completed successfully")
 	}
 	return 0
 }
diff --git a/internal/branch/branch_api.go b/internal/branch/branch_api.go
index b2611a1..9890b14 100644
--- a/internal/branch/branch_api.go
+++ b/internal/branch/branch_api.go
@@ -6,14 +6,14 @@
 
 import (
 	"fmt"
+	"io/ioutil"
+	"net/http"
+	"time"
+
 	gerritapi "github.com/andygrunwald/go-gerrit"
 	"go.chromium.org/luci/common/errors"
 	"go.uber.org/atomic"
 	"golang.org/x/sync/errgroup"
-	"io/ioutil"
-	"log"
-	"net/http"
-	"time"
 )
 
 // GerritProjectBranch contains all the details for creating a new Gerrit branch
@@ -28,7 +28,7 @@
 func qpsToPeriod(qps float64) time.Duration {
 	if qps <= 0 {
 		// some very generous default duration
-		LogErr("Got qps %v, <= 0. Using a default duration instead.", qps)
+		LogOut("Got qps %v, <= 0. Using a default duration instead.", qps)
 		return time.Second * 10
 	}
 	periodSec := float64(time.Second) / qps
@@ -64,10 +64,10 @@
 // for the specified inputs using the Gerrit API.
 func CreateRemoteBranchesApi(authedClient *http.Client, branches []GerritProjectBranch, dryRun bool, gerritQps float64) error {
 	if dryRun {
-		log.Printf("Dry run (no --push): would create remote branches for %v Gerrit repos", len(branches))
+		LogOut("Dry run (no --push): would create remote branches for %v Gerrit repos", len(branches))
 		return nil
 	}
-	log.Printf("Creating remote branches for %v Gerrit repos. This will take a few minutes, since otherwise Gerrit would throttle us.", len(branches))
+	LogOut("Creating remote branches for %v Gerrit repos. This will take a few minutes, since otherwise Gerrit would throttle us.", len(branches))
 	var g errgroup.Group
 	throttle := time.Tick(qpsToPeriod(gerritQps))
 	createCount := atomic.Int64{}
@@ -81,13 +81,13 @@
 			}
 			count := createCount.Inc()
 			if count%10 == 0 {
-				log.Printf("Created %v of %v remote branches", count, len(branches))
+				LogOut("Created %v of %v remote branches", count, len(branches))
 			}
 			return nil
 		})
 	}
 	err := g.Wait()
-	log.Printf("Successfully created %v of %v remote branches", createCount.Load(), len(branches))
+	LogOut("Successfully created %v of %v remote branches", createCount.Load(), len(branches))
 	return err
 }
 
diff --git a/internal/branch/bump.go b/internal/branch/bump.go
index fdf5818..ba255f6 100644
--- a/internal/branch/bump.go
+++ b/internal/branch/bump.go
@@ -6,10 +6,11 @@
 
 import (
 	"fmt"
+	"os"
+
 	"go.chromium.org/chromiumos/infra/go/internal/chromeos_version"
 	"go.chromium.org/chromiumos/infra/go/internal/git"
 	"go.chromium.org/luci/common/errors"
-	"os"
 )
 
 func bumpVersion(
@@ -72,7 +73,7 @@
 // source branch for a branch creation command.
 func BumpForCreate(componentToBump chromeos_version.VersionComponent, release, push bool, branchName, sourceUpstream string) error {
 	commitMsg := fmt.Sprintf("Bump %s number after creating branch %s", componentToBump, branchName)
-	LogErr(commitMsg)
+	LogOut(commitMsg)
 	if err := bumpVersion(componentToBump, branchName, commitMsg, !push); err != nil {
 		return err
 	}
@@ -80,14 +81,14 @@
 	if release {
 		// Bump milestone after creating release branch.
 		commitMsg = fmt.Sprintf("Bump milestone after creating release branch %s", branchName)
-		LogErr(commitMsg)
+		LogOut(commitMsg)
 		if err := bumpVersion(chromeos_version.ChromeBranch, sourceUpstream, commitMsg, !push); err != nil {
 			return err
 		}
 		// Also need to bump the build number, otherwise two release will have conflicting versions.
 		// See crbug.com/213075.
 		commitMsg = fmt.Sprintf("Bump build number after creating release branch %s", branchName)
-		LogErr(commitMsg)
+		LogOut(commitMsg)
 		if err := bumpVersion(chromeos_version.Build, sourceUpstream, commitMsg, !push); err != nil {
 			return err
 		}
@@ -109,7 +110,7 @@
 		}
 		commitMsg = fmt.Sprintf("Bump %s number for source branch %s after creating branch %s",
 			sourceComponentToBump, sourceUpstream, branchName)
-		LogErr(commitMsg)
+		LogOut(commitMsg)
 		if err := bumpVersion(sourceComponentToBump, sourceUpstream, commitMsg, !push); err != nil {
 			return err
 		}
diff --git a/internal/branch/common.go b/internal/branch/common.go
index b28c65c..555e4e3 100644
--- a/internal/branch/common.go
+++ b/internal/branch/common.go
@@ -6,9 +6,6 @@
 
 import (
 	"fmt"
-	"go.chromium.org/chromiumos/infra/go/internal/git"
-	"go.chromium.org/chromiumos/infra/go/internal/repo"
-	"go.chromium.org/luci/common/errors"
 	"io/ioutil"
 	"log"
 	"net/url"
@@ -16,6 +13,10 @@
 	"path/filepath"
 	"strconv"
 	"strings"
+
+	"go.chromium.org/chromiumos/infra/go/internal/git"
+	"go.chromium.org/chromiumos/infra/go/internal/repo"
+	"go.chromium.org/luci/common/errors"
 )
 
 const VersionFileProjectPath = "src/third_party/chromiumos-overlay"
@@ -44,7 +45,7 @@
 	}
 }
 
-// LogOut logs to stderr.
+// LogErr logs to stderr.
 func LogErr(format string, a ...interface{}) {
 	if StderrLog != nil {
 		StderrLog.Printf(format, a...)
diff --git a/internal/branch/helper.go b/internal/branch/helper.go
index c6bace9..958619d 100644
--- a/internal/branch/helper.go
+++ b/internal/branch/helper.go
@@ -531,10 +531,10 @@
 			return fmt.Errorf("already branched %s. Please rerun with --force if you "+
 				"would like to proceed", vinfo.VersionString())
 		} else {
-			LogErr("Overwriting branch with version %s (--force was set).\n", vinfo.VersionString())
+			LogOut("Overwriting branch with version %s (--force was set).\n", vinfo.VersionString())
 		}
 	} else {
-		LogErr("No branch exists for version %s. Continuing...\n", vinfo.VersionString())
+		LogOut("No branch exists for version %s. Continuing...\n", vinfo.VersionString())
 	}
 	return nil
 }
diff --git a/internal/branch/manifest_repo.go b/internal/branch/manifest_repo.go
index c96d237..741ffaf 100644
--- a/internal/branch/manifest_repo.go
+++ b/internal/branch/manifest_repo.go
@@ -8,7 +8,6 @@
 	"encoding/xml"
 	"fmt"
 	"io/ioutil"
-	"log"
 	"path/filepath"
 	"regexp"
 	"strings"
@@ -228,7 +227,7 @@
 // RepairManifestsOnDisk repairs the revision and upstream attributes of
 // manifest elements on disk for the given projects.
 func (m *ManifestRepo) RepairManifestsOnDisk(branchesByPath map[string]string) error {
-	log.Printf("Repairing manifest project %s", m.Project.Name)
+	LogOut("Repairing manifest project %s", m.Project.Name)
 	manifestPaths, err := m.listManifests([]string{defaultManifest, officialManifest})
 
 	if err != nil {
