]> Cypherpunks.ru repositories - goredo.git/blobdiff - log.go
Properly space shorter output messages
[goredo.git] / log.go
diff --git a/log.go b/log.go
index ebfb39493043b630f6b839ff75d6cecd54c0a91c..2745fd4ee71a05f90837f80f1fd2e2137f4e304b 100644 (file)
--- a/log.go
+++ b/log.go
@@ -72,9 +72,21 @@ var (
        flagLogPid  = flag.Bool("log-pid", false, fmt.Sprintf("append PIDs (%s=1)", EnvLogPid))
        flagLogJS   = flag.Bool("log-js", false, fmt.Sprintf("enable jobserver messages logging (%s=1)", EnvLogJS))
 
-       LogMutex sync.Mutex
+       LogMutex   sync.Mutex
+       LogLenPrev int
 )
 
+func fillUpToTermSize(s, end string) string {
+       sLen := len(s)
+       if sLen < LogLenPrev {
+               s += strings.Repeat(" ", LogLenPrev-sLen)
+               LogLenPrev = sLen
+       } else {
+               LogLenPrev = sLen
+       }
+       return s + end
+}
+
 func trace(level, format string, args ...interface{}) {
        var p string
        if MyPid != 0 {
@@ -83,7 +95,9 @@ func trace(level, format string, args ...interface{}) {
        switch level {
        case CNone:
                LogMutex.Lock()
-               os.Stderr.WriteString(StderrPrefix + p + fmt.Sprintf(format+"\n", args...))
+               os.Stderr.WriteString(fillUpToTermSize(
+                       StderrPrefix+p+fmt.Sprintf(format, args...), "\n",
+               ))
                LogMutex.Unlock()
                return
        case CDebug:
@@ -116,7 +130,7 @@ func trace(level, format string, args ...interface{}) {
        msg := fmt.Sprintf(format, args...)
        msg = StderrPrefix + colourize(level, p+strings.Repeat(". ", Level)+msg)
        LogMutex.Lock()
-       os.Stderr.WriteString(msg + "\n")
+       os.Stderr.WriteString(fillUpToTermSize(msg, "\n"))
        LogMutex.Unlock()
 }