feat: add -logfile flag to write logs to a file

The -logfile flag writes log output to a file in addition to stderr,
so users can run barnard in the TUI without log spam on screen.

Usage:
  barnard -log=debug -logfile=/tmp/barnard.log -server=mumble.example.com
This commit is contained in:
Brandon McGinty (deepseek)
2026-08-08 22:33:23 -04:00
committed by Brandon McGinty
parent e483512f74
commit 53918788f7
+12 -1
View File
@@ -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() {