Split output into stdout/stderr based on log level

This commit is contained in:
2024-03-09 17:48:29 -06:00
parent 5e31522491
commit a72de046e1

12
main.go
View File

@@ -1,6 +1,7 @@
package main package main
import ( import (
"bytes"
"flag" "flag"
"os" "os"
"os/signal" "os/signal"
@@ -148,12 +149,23 @@ func Bot() {
defer log.Warn("Graceful shutdown complete") defer log.Warn("Graceful shutdown complete")
} }
type OutputSplitter struct{}
func (splitter *OutputSplitter) Write(p []byte) (n int, err error) {
if bytes.Contains(p, []byte("level=error")) {
return os.Stderr.Write(p)
}
return os.Stdout.Write(p)
}
func main() { func main() {
log.SetFormatter(&log.TextFormatter{ log.SetFormatter(&log.TextFormatter{
TimestampFormat: "2006-01-02 15:04:05", TimestampFormat: "2006-01-02 15:04:05",
FullTimestamp: true, FullTimestamp: true,
}) })
log.SetOutput(&OutputSplitter{})
// Load environment variables // Load environment variables
if err := godotenv.Load(); err != nil { if err := godotenv.Load(); err != nil {
log.WithField("error", err).Warn("Failed to load .env file") log.WithField("error", err).Warn("Failed to load .env file")