diff --git a/main.go b/main.go index aa73ca5..d13e6b2 100644 --- a/main.go +++ b/main.go @@ -137,7 +137,7 @@ func main() { toneTestOutput := flag.String("tone-out", "incoming.pcm", "file to save incoming audio to in tone-test mode") tcpOnly := flag.Bool("tcp", false, "disable UDP, force audio through TCP tunnel") logLevel := flag.String("log", "warn", "log level: debug, info, warn, error") - logFile := flag.String("logfile", "", "write logs to this file (in addition to stderr)") + logFile := flag.String("logfile", "", "write logs to this file (logging is disabled when omitted)") flag.Parse() @@ -155,17 +155,17 @@ func main() { default: level = barnlog.LevelWarn } - // Default: log to stderr - var writer io.Writer = os.Stderr + // Logging is opt-in. Select /dev/stderr explicitly when terminal logging is + // desired; otherwise library diagnostics must not corrupt terminal output. + barnlog.SetLogger(nil) if *logFile != "" { f, err := os.OpenFile(*logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) if err != nil { fmt.Fprintf(os.Stderr, "cannot open log file %s: %v\n", *logFile, err) } else { - writer = io.MultiWriter(os.Stderr, f) + barnlog.SetLogger(barnlog.NewWriterLogger(f, level)) } } - barnlog.SetLogger(barnlog.NewWriterLogger(writer, level)) if *profile == true { go func() {