BREAKING CHANGE: Update ConfigureLogging

Now takes a writer as additional output next to stderr
to write logs to
This commit is contained in:
Melody Becker 2025-04-08 17:09:50 +02:00
parent 0eafc6806b
commit 0a22727d46
Signed by: mstar
SSH key fingerprint: SHA256:9VAo09aaVNTWKzPW7Hq2LW+ox9OdwmTSHRoD4mlz1yI

View file

@ -8,8 +8,6 @@ import (
"github.com/rs/zerolog" "github.com/rs/zerolog"
"github.com/rs/zerolog/log" "github.com/rs/zerolog/log"
"git.mstar.dev/mstar/goutils/logrotate"
) )
var cliFlagLogLevel = "info" var cliFlagLogLevel = "info"
@ -30,13 +28,12 @@ func SetupFlags() {
) )
} }
// If logfileName != nil, that file will be used for writing logs to. // Configure logging. Utilises the flags setup in [SetupFlags].
// Additionally, this function will then return another function // If logWriter is not nil, will also write logs, as json objects,
// for rotating the log file // to the given writer
func ConfigureLogging(logfileName *string) func() error { func ConfigureLogging(logWriter io.Writer) {
rotateFunc := configOutputs(logfileName) configOutputs(logWriter)
configLevel() configLevel()
return rotateFunc
} }
func configLevel() { func configLevel() {
@ -59,20 +56,14 @@ func configLevel() {
log.Info().Str("new-level", cliFlagLogLevel).Msg("New logging level set") log.Info().Str("new-level", cliFlagLogLevel).Msg("New logging level set")
} }
func configOutputs(logfileName *string) (rotateLogs func() error) { func configOutputs(logWriter io.Writer) {
rotateLogs = func() error { return nil } console := zerolog.ConsoleWriter{Out: os.Stderr}
extraLogWriters := []io.Writer{} extraLogWriters := []io.Writer{console}
if logfileName != nil { if logWriter != nil {
logfile, err := logrotate.New(*logfileName) extraLogWriters = append(extraLogWriters, logWriter)
if err != nil {
log.Fatal().Err(err).Msg("Failed to open log file")
}
extraLogWriters = append(extraLogWriters, logfile)
rotateLogs = logfile.Rotate
} }
if !cliFlagLogJson { if !cliFlagLogJson {
console := zerolog.ConsoleWriter{Out: os.Stderr} log.Logger = zerolog.New(zerolog.MultiLevelWriter(extraLogWriters...)).
log.Logger = zerolog.New(zerolog.MultiLevelWriter(append([]io.Writer{console}, extraLogWriters...)...)).
With(). With().
Timestamp(). Timestamp().
Logger() Logger()