1
0
mirror of https://github.com/mgechev/revive.git synced 2025-04-23 11:58:51 +02:00
revive/logging/logger.go

38 lines
864 B
Go
Raw Normal View History

// Package logging provides a logger and related methods.
package logging
import (
"io"
"log/slog"
"os"
)
const logFile = "revive.log"
var logger *slog.Logger
// GetLogger retrieves an instance of an application logger which outputs
// to a file if the debug flag is enabled
func GetLogger() (*slog.Logger, error) {
if logger != nil {
return logger, nil
}
debugModeEnabled := os.Getenv("DEBUG") != ""
if !debugModeEnabled {
// by default, suppress all logging output
return slog.New(slog.NewTextHandler(io.Discard, nil)), nil // TODO: change to slog.New(slog.DiscardHandler) when we switch to Go 1.24
}
fileWriter, err := os.Create(logFile)
if err != nil {
return nil, err
}
logger = slog.New(slog.NewTextHandler(io.MultiWriter(os.Stderr, fileWriter), nil))
logger.Info("Logger initialized", "logFile", logFile)
return logger, nil
}