1
0
mirror of https://github.com/mgechev/revive.git synced 2025-07-15 01:04:40 +02:00

change: replace log with log/slog for logging (#1280)

* change: replace log with log/slog for logging
* add TODO about slog.DiscardHandler
This commit is contained in:
Oleksandr Redko
2025-03-25 09:47:59 -07:00
committed by GitHub
parent 88e5689475
commit 561c949334
4 changed files with 91 additions and 24 deletions

View File

@ -3,40 +3,35 @@ package logging
import (
"io"
"log"
"log/slog"
"os"
)
var logger *log.Logger
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() (*log.Logger, error) {
func GetLogger() (*slog.Logger, error) {
if logger != nil {
return logger, nil
}
var writer io.Writer
var err error
writer = io.Discard // by default, suppress all logging output
debugModeEnabled := os.Getenv("DEBUG") == "1"
if debugModeEnabled {
writer, err = os.Create("revive.log")
if err != nil {
return nil, err
}
}
logger = log.New(writer, "", log.LstdFlags)
debugModeEnabled := os.Getenv("DEBUG") != ""
if !debugModeEnabled {
// Clear all flags to skip log output formatting step to increase
// performance somewhat if we're not logging anything
logger.SetFlags(0)
// 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
}
logger.Println("Logger initialized")
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
}