diff --git a/legacy/builder/i18n/i18n.go b/legacy/builder/i18n/i18n.go
index c40c6d45b18..0cc3112940f 100644
--- a/legacy/builder/i18n/i18n.go
+++ b/legacy/builder/i18n/i18n.go
@@ -40,9 +40,12 @@ type Logger interface {
 type LoggerToCustomStreams struct {
 	Stdout io.Writer
 	Stderr io.Writer
+	mux    sync.Mutex
 }
 
 func (s LoggerToCustomStreams) Fprintln(w io.Writer, level string, format string, a ...interface{}) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr
@@ -51,6 +54,8 @@ func (s LoggerToCustomStreams) Fprintln(w io.Writer, level string, format string
 }
 
 func (s LoggerToCustomStreams) UnformattedFprintln(w io.Writer, str string) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr
@@ -59,6 +64,8 @@ func (s LoggerToCustomStreams) UnformattedFprintln(w io.Writer, str string) {
 }
 
 func (s LoggerToCustomStreams) UnformattedWrite(w io.Writer, data []byte) {
+	s.mux.Lock()
+	defer s.mux.Unlock()
 	target := s.Stdout
 	if w == os.Stderr {
 		target = s.Stderr