Add structured container-friendly logging
This commit is contained in:
36
logger.go
Normal file
36
logger.go
Normal file
@@ -0,0 +1,36 @@
|
||||
package reforger_utils
|
||||
|
||||
import (
|
||||
"log/slog"
|
||||
"os"
|
||||
"sync"
|
||||
)
|
||||
|
||||
var (
|
||||
loggerMu sync.RWMutex
|
||||
logger = newDefaultLogger()
|
||||
)
|
||||
|
||||
func newDefaultLogger() *slog.Logger {
|
||||
return slog.New(slog.NewJSONHandler(os.Stdout, &slog.HandlerOptions{Level: slog.LevelInfo}))
|
||||
}
|
||||
|
||||
// SetLogger configures the package logger.
|
||||
// Passing nil resets it to the default JSON logger writing to stdout.
|
||||
func SetLogger(l *slog.Logger) {
|
||||
loggerMu.Lock()
|
||||
defer loggerMu.Unlock()
|
||||
|
||||
if l == nil {
|
||||
logger = newDefaultLogger()
|
||||
return
|
||||
}
|
||||
|
||||
logger = l
|
||||
}
|
||||
|
||||
func getLogger() *slog.Logger {
|
||||
loggerMu.RLock()
|
||||
defer loggerMu.RUnlock()
|
||||
return logger
|
||||
}
|
||||
Reference in New Issue
Block a user