diff --git a/main.go b/main.go index 5192648..8963dc5 100644 --- a/main.go +++ b/main.go @@ -117,6 +117,7 @@ func main() { profile := flag.Bool("profile", false, "add http server to serve profiles") noiseSuppressionEnabled := flag.Bool("noise-suppression", false, "enable noise suppression for microphone input") logLevel := flag.String("log", "warn", "log level: debug, info, warn, error") + logFile := flag.String("logfile", "", "write logs to this file (in addition to stderr)") flag.Parse() @@ -134,7 +135,17 @@ func main() { default: level = barnlog.LevelWarn } - barnlog.SetLogger(barnlog.NewWriterLogger(os.Stderr, level)) + // Default: log to stderr + var writer io.Writer = os.Stderr + 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(writer, level)) if *profile == true { go func() {