hibiscus/logger.go

28 lines
784 B
Go
Raw Normal View History

2024-03-20 16:18:23 +03:00
package main
import (
2024-03-26 18:42:41 +03:00
"github.com/go-chi/chi/v5/middleware"
2024-03-20 16:18:23 +03:00
"io"
2024-03-26 18:42:41 +03:00
"log"
2024-03-20 16:18:23 +03:00
"log/slog"
"os"
)
var LogFile = "config/log.txt"
// LogInit makes slog output to both stdout and a file
func LogInit() {
f, err := os.OpenFile(LogFile, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
2024-03-23 16:17:06 +03:00
slog.SetDefault(slog.New(slog.NewTextHandler(os.Stdout, nil))) // Fallback to stdout
slog.Error("error opening log file, logging to stdout", "path", LogFile, "error", err)
return
2024-03-20 16:18:23 +03:00
}
// No defer f.Close() because that breaks the MultiWriter
w := io.MultiWriter(f, os.Stdout)
slog.SetDefault(slog.New(slog.NewTextHandler(w, nil)))
2024-03-26 18:42:41 +03:00
// Make chi log to file too
middleware.DefaultLogger = middleware.RequestLogger(&middleware.DefaultLogFormatter{Logger: log.Default(), NoColor: true})
2024-03-20 16:18:23 +03:00
}