github.com/esnet/gdg@v0.6.1-0.20240412190737-6b6eba9c14d8/internal/log/log.go (about) 1 package log 2 3 import ( 4 "github.com/lmittmann/tint" 5 "github.com/mattn/go-isatty" 6 "log" 7 "log/slog" 8 "os" 9 "time" 10 ) 11 12 // InitializeAppLogger initialize logger, invoked from main 13 func InitializeAppLogger(stdout *os.File, stderr *os.File, debug bool) { 14 errStream := stderr 15 outStream := stdout 16 level := slog.LevelInfo 17 showSource := false 18 if debug { 19 level = slog.LevelDebug 20 showSource = true 21 } 22 23 opts := &tint.Options{ 24 Level: level, 25 TimeFormat: time.DateTime, 26 AddSource: showSource, 27 NoColor: !isatty.IsTerminal(outStream.Fd())} 28 29 //Splits the logging between stdout/stderr as appropriate 30 myHandler := NewContextHandler(slog.Default().Handler(), outStream, errStream, opts) 31 customSplitStreamLogger := slog.New(myHandler) 32 slog.SetDefault(customSplitStreamLogger) 33 log.SetOutput(os.Stderr) 34 35 }