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
import (
"bytes"
"flag"
"os"
"os/signal"
@@ -148,12 +149,23 @@ func Bot() {
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() {
log.SetFormatter(&log.TextFormatter{
TimestampFormat: "2006-01-02 15:04:05",
FullTimestamp: true,
})
log.SetOutput(&OutputSplitter{})
// Load environment variables
if err := godotenv.Load(); err != nil {
log.WithField("error", err).Warn("Failed to load .env file")